2013-10-29 85 views
0

我正在使用Corona SDK編寫Lua,並且我正在尋找一個對象在碰撞後不活動。如何在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軸的屏幕上移除。我的問題是碰撞後的球(object2)在碰撞後也是不可見的,但它仍然可以被新的子彈擊中。只有一顆子彈,所以我可以直接說出子彈。不管怎樣,但是有一系列的球,所以球必須像球一樣處理。 有沒有辦法通過索引,我通過onCollision函數?

回答

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

非常歡迎你:) – PersuitOfPerfection

0

根據CoronaSDK chapter about event.collisionevent.object1event.object2是確定那些碰撞對象(引用到子彈和你的情況球中的一個)的屬性。那麼,它不能解決你的問題嗎?

+0

那麼,event.object1或event.object2是有用的,但它們有一定的侷限性。例如,我可以(並且)製作event.object2:isVisible = false;但是,我無法重置object2的x位置,或者將其移動到另一個方向或類似的位置。 –

相關問題