2014-02-24 125 views
0

我想知道如何讓我的碰撞在Corona中正確工作。這是我到目前爲止:Corona中的碰撞事件

local function onLocalCollision(event) 

if (event.phase == "began") then 

    print("began: " .. event.object1.myName .. " and " .. event.object2.myName) 
    test = display.newRect(screenW - 50, halfH, 100, screenH) 


elseif (event.phase == "ended") then 

    print("ended: " .. event.object1.myName .. " and " .. event.object2.myName) 

end 

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

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

如果你能幫助我,這將是偉大的!提前致謝!

+0

你的問題是什麼? –

回答

1

我覺得,首先你應該增加一些屬性與碰撞物體,如:

lilPig.myName = "lilPig" 

endOfScreen.myName = "endOfScreen" 

這樣,我們就可以直接檢查它們在碰撞監聽器並且如果我們以後有更多的碰撞的,我們可以很容易地檢查另一個條件。

我們也可以通過RunTime監聽器來實現它。

-------- 

RuntimeListener("collision", onCollision) 

-------- 



function onCollision(event) 
     if (event.phase == "began") then 
     print("COLLISION: ".. event.object1.myName .. " & ".. event.object2.myName) 

      if (event.object1.myName == "lilPig" and event.object2.myName == "endOfScreen") or 
        (event.object1.myName == "endOfScreen" and event.object2.myName == "lilPig") then 

          print("Your code of block for collision event") 

end 
+0

好吧,我做了你所說的,但運行時監聽器是一個未聲明的全球價值。這可能是一個noob問題,對不起。 –

+0

我其實想出了那部分,但現在我有一個不同的問題。它說myName是一個零值,並有一個問題。有任何想法嗎? –

+0

請問你可否告訴我你的申報代碼。 –