电晕物理引擎碰撞事件对象

问题描述:

我正在尝试一个简单的游戏电晕物理引擎。我创建了几个“球”,只是圆形对象和“很好”的静态传感器对象。电晕物理引擎碰撞事件对象

physics.addBody(ball,{density=1-dens, friction=0.2, bounce=boun, radius=imp}) 
physics.addBody(well,"static", { radius=sensorRadius, isSensor = true}) 

碰撞事件具有“自我”和“事件”参数。有没有简单的方法来检查撞击井的“球”的半径?

你可能要么想通了这一点已经或现在放弃电晕,但即使这样有一个答案在这里,我将添加我的两分钱:

你可以任何你想要的属性添加到您的球对象。您不必显式声明属性 - 它们是在为它们分配值时自动创建的。例如,添加一个“半径”属性,只是这样做,一旦你已经创建了“球”的对象:

ball.radius = 20 

一旦你做到了这一点,假设你已经把它贴在碰撞事件处理程序球本身,球被称为“自我”参数传递,你可以用self.radius得到半径:

local radius = self.radius 

如果你已经附加了事件处理一些其他的对象,球会被传递作为“事件”参数的“其他”属性。因此,使用您的例子好了,如果你附加的事件处理程序的好,那么你会得到球的半径:

local radius = event.other.radius 

当然,如果你有其他(非球)对象,可以也击中井,而这些物体没有“半径”属性,那么你必须确保“event.other”实际上是一个“球”物体。如果你不这样做,那么当你尝试获得半径时你会得到“零”。事实上,你可以使用这种行为来检测到其他对象实际上是一个球:

local radius = event.other.radius 
if radius then 
    -- may be safe to assume event.other is a ball 
else 
    -- something else hit the well 
end 

希望这有助于。我只有一个月进入电晕我自己,所以...