2015-05-31 53 views
0

我在Corona SDK中構建了一個遊戲,涉及兩種不同類型的物體的碰撞。遊戲中共有3個物體,一個火箭飛船,一個小行星和一個黃色的球體。當小行星撞上火箭飛船時,你失去了一次生命。當一個黃色的球體擊中火箭飛船時,你會獲得一個點。由於某些原因,小行星和黃色球體都表示,他們只有一次碰撞時纔會與火箭飛船發生多次碰撞。我多次重新評估了我的代碼,但我無法弄清楚問題所在。請幫助,如果你需要示例代碼,我可以發佈一些。在Corona中多次報告碰撞

回答

0

碰撞有多個階段。你必須測試階段。碰撞開始和結束。應該有一個event.phase,告訴你你在哪個階段。也有預碰撞事件。

0

您的代碼必須與任何這兩個階段中,

local crate1 = display.newImage("crate.png") 
physics.addBody(crate1, { density=3.0, friction=0.5, bounce=0.3 }) 
crate1.myName = "first crate" 

local crate2 = display.newImage("crate.png") 
physics.addBody(crate2, { density=3.0, friction=0.5, bounce=0.3 }) 
crate2.myName = "second crate" 

local function onCollision(event) 
    if (event.phase == "began") then 
    print("began: " .. event.object1 .. " & " .. event.object2) 
    elseif (event.phase == "ended") then 
    print("ended: " .. event.object1 .. " & " .. event.object2) 
    end 
end 

crate1.collision = onLocalCollision 
crate1:addEventListener("collision", crate1) 

crate2.collision = onLocalCollision 
crate2:addEventListener("collision", crate2) 

這將幫助你避免多次碰撞。

https://docs.coronalabs.com/daily/guide/physics/collisionDetection/index.html