停止多次发射电晕碰撞事件

时间:2015-05-14 23:26:28

标签: sdk corona

所以我只希望我的碰撞监听器发射一次。我试过输入if if variables但它并不完全优雅。

local function collideGround( self, event ) 
        local obj  = event.other 
        local phase = event.phase        
        if ( phase == "began" ) then             
            if obj == ground then
                print("Hit")

            end

        elseif ( phase == "ended" ) then



        end
        return true
    end
    player.collision = collideGround
    player:addEventListener( "collision", player )      

1 个答案:

答案 0 :(得分:0)

碰撞监听器不像触摸事件或点击事件。每当你的玩家对象从碰撞事件中醒来时,collideGround将被调用,这就是为什么他们为我们提供了三个不同的event.phase

任何返回true的碰撞事件处理程序都将停止该碰撞事件的进一步传播,即使还有其他侦听器已收到它。这允许您进一步限制创建并传递到Lua端的事件数。虽然单个事件并不是非常昂贵,但是大量事件会影响整体性能,因此限制事件传播是一种很好的做法。

我认为Collision Detection会帮助您以某种方式实现目标。