我在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函数?
答案 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.object1
和event.object2
是识别这些碰撞对象的属性(引用指向子弹,其中一个球在您的情况下)。那么,它不解决你的问题吗?