如何在碰撞后使用Lua(使用Corona SDK)使对象无效?

时间:2013-10-29 16:01:35

标签: android ios lua corona

我在Lua中使用Corona SDK编写,我希望在碰撞后使对象处于非活动状态。

function onCollision(event)
    if event.phase == "began" then
        bullet.collided = true
        bullet.isVisible = false
        bullet:applyLinearImpulse(-5, 0, bullet.x, bullet.y)
        explode(event)
    end 
end 

function explode(event)
    local x = event.object2.x
    local y = event.object2.y

    explosion.x = x
    explosion.y = y
    explosion.isVisible = true
    explosion:play()
    resetExplosion()
end 

上述功能在屏幕上拍摄单个子弹,并在与y轴拍摄的球碰撞后使其不可见。然后应用一个脉冲将其从x轴上的屏幕上移除。我的问题是碰撞中的球(物体2)在碰撞后也是不可见的,但它仍然可以被新的子弹击中。只有一颗子弹,所以我可以直接说一下子弹。无论如何,但是有一系列球,所以球必须像球[i]一样被解决。无论如何。 有没有办法传递索引,我通过onCollision函数?

2 个答案:

答案 0 :(得分:2)

如果在碰撞处理程序中稍微延迟,可以将主体设置为非活动状态。 即:

-- Inside your Collision event
local function delay()
    --Change the body's active state to false
    body.isBodyActive = false
end

timer.performWithDelay( 10, delay )

答案 1 :(得分:0)

根据CoronaSDK chapter about event.collision event.object1event.object2是识别这些碰撞对象的属性(引用指向子弹,其中一个球在您的情况下)。那么,它不解决你的问题吗?