我正在尝试使用Corona物理引擎进行简单的游戏。我已经创建了几个“球”,只是圆形对象和“井”静态传感器对象。
physics.addBody(ball,{density=1-dens, friction=0.2, bounce=boun, radius=imp})
physics.addBody( well,"static", { radius=sensorRadius, isSensor = true} )
碰撞事件具有“自我”和“事件”参数。有没有一种简单的方法来检查击中井的“球”的半径?
答案 0 :(得分:2)
你可能已经想出了这个,或者现在已经放弃了Corona,但是这里有一个答案我会加上我的两分钱:
您可以将任何属性添加到球对象中。您不必显式声明属性 - 它们是在为它们赋值时自动创建的。例如,要添加“radius”属性,只需在创建“ball”对象后执行此操作:
ball.radius = 20
一旦你完成了这个,假设你已经将碰撞事件处理程序附加到球本身,球将作为“self”参数传递,你可以使用self.radius获得半径:
local radius = self.radius
如果您已将事件处理程序附加到其他对象,则该球将作为“event”参数的“other”属性传递。因此,使用井的示例,如果您将事件处理程序附加到井中,那么您将获得球的半径:
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
希望这会有所帮助。我自己只有一个月进入Corona,所以......