1

我有这个场景,我想在地球与黑洞碰撞时播放一个爆炸精灵。

在此处输入图像描述

所以我写了这个:

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。正如您从屏幕截图中看到的那样,爆炸发生在左上角。知道为什么会这样吗?

4

1 回答 1

1

也许是因为文档中“gotchas”下关于碰撞事件的报告。

陷阱

x 和 y 位置可以受physics.getAverageCollisionPositions()和影响physics.setReportCollisionsInContentCoordinates()

活动位置

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

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

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

于 2013-09-22T08:41:34.817 回答