0

我正在开发一个简单的突破游戏,但我遇到了问题ball:addEventListener( "collision", removeBricks ),它可以正常工作,直到球同时击中两块砖,然后向上/向下方向 ( vy) 切换两次,使球继续向上或向下移动。

如何一一进行 addEventListener 碰撞并一次禁用多个碰撞?

function removeBricks(event)

    if event.other.isBrick == 1 then
        vy = vy * (-1)  
        ...
    end
end
4

1 回答 1

0

无需在removeBricks函数中更改球的速度,您只需翻转一个标志,表示“球已击中一些砖块并应更改其方向”,然后在您的enterFrame处理程序中更改球的速度:

local ballHasCollided = false

local function removeBricks(event)
    if event.other.isBrick == 1 then
        ballHasCollided = true
    end
end

local function updateBallVelocity(event)
    if ballHasCollided then
        ballHasCollided = false
        ball.vy = -ball.vy
        -- ...
end

-- your game set up code somewhere
Runtime:addEventListener('enterFrame', updateBallVelocity)
于 2013-06-28T05:36:48.123 回答