0

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

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 轴上的屏幕上移除。我的问题是碰撞中的球(object2)在碰撞后也是不可见的,但它仍然可以被新子弹击中。只有一个子弹,所以我可以直接说bullet.whatever,但是有一个balls数组,所以必须像ball[i].whatever一样处理ball。有没有办法通过 onCollision 函数传递索引?

4

2 回答 2

2

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

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

timer.performWithDelay( 10, delay )
于 2013-10-29T19:15:40.997 回答
0

根据CoronaSDK 关于 event.collision 的章节, event.object1并且event.object2是识别那些碰撞对象的属性(在您的情况下对子弹和其中一个球的引用)。那么,它不能解决您的问题吗?

于 2013-10-29T16:21:56.553 回答