我有这个场景,我希望当地球与黑洞碰撞时会发挥爆炸精灵。
所以我写了这个:
local function onCollision( event )
if ( event.phase == "began" ) then
if(event.object1.name =="blackholeSprite" or event.object2.name =="blackholeSprite") then
explosionSprite.x=event.x
explosionSprite.y=event.y
explosionSprite:play()
timer.performWithDelay( 1500, gameOver )
end
end
end
问题是,当球和黑洞碰撞event.x
和event.y
时,不会发生爆炸。从截图中可以看出,爆炸发生在左上角。知道为什么会这样吗?
答案 0 :(得分:1)
也许是因为docs在“陷阱”下针对碰撞事件报告了什么。
陷阱
x和y位置可能会受到
physics.getAverageCollisionPositions()
和physics.setReportCollisionsInContentCoordinates()
的影响。活动地点
在“结束”阶段(参见“碰撞检测指南”)中,X和Y位置始终为零。这是Box2D限制。
此外,当碰撞涉及圆圈时,如果在局部空间中返回碰撞结果(参见
physics.setReportCollisionsInContentCoordinates()
,则碰撞的局部空间位置始终为0,0。这是一个Box2D限制。
要解决您的问题,您可以尝试从(其中一个)对象本身获取坐标,而不是从事件中获取它们。