event.x似乎不起作用

时间:2013-09-22 07:43:42

标签: lua corona

我有这个场景,我希望当地球与黑洞碰撞时会发挥爆炸精灵。

enter image description here

所以我写了这个:

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.xevent.y时,不会发生爆炸。从截图中可以看出,爆炸发生在左上角。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

也许是因为docs在“陷阱”下针对碰撞事件报告了什么。

  

陷阱

     

x和y位置可能会受到physics.getAverageCollisionPositions()physics.setReportCollisionsInContentCoordinates()的影响。

     

活动地点

     

在“结束”阶段(参见“碰撞检测指南”)中,X和Y位置始终为零。这是Box2D限制。

     

此外,当碰撞涉及圆圈时,如果在局部空间中返回碰撞结果(参见physics.setReportCollisionsInContentCoordinates(),则碰撞的局部空间位置始终为0,0。这是一个Box2D限制。

要解决您的问题,您可以尝试从(其中一个)对象本身获取坐标,而不是从事件中获取它们。