2013-06-27 2 views
0

Я работаю над простой прорывной игрой, и у меня проблема с ball:addEventListener("collision", removeBricks), она отлично работает, пока мяч не ударит по двум кирпичам в то же время, что и направление вверх/вниз (vy) переключается дважды, заставляя мяч продолжать движение вверх или вниз.Один за другим addEventListener collision

Как выполнить однократное столкновение addEventListener и отключить сразу несколько столкновений?

function removeBricks(event) 

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

Можете ли вы предоставить дополнительный код о том, как вы создаете кирпич? – DevfaR

ответ

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)