我在一個遊戲中有一組對象,它是一個傳感器(我們將它們統稱爲object1)。當它與我的主要對象(object2)相撞時,分數會增加10.但是,在每次後續重新啓動場景(而不是整個遊戲)之後,object1和object2之間的每次衝突都會自動複製,然後重複三次,等等。電暈傳感器對象沒有正確移除
因此,對於場景的第一次運行,object1與object2發生碰撞一次(我知道這是因爲每當2個物體碰撞時我都有一個打印語句)。第二次碰撞兩次,第三次碰撞三次,等等。我認爲我沒有刪除傳感器的某些功能,但我無法弄清楚它是什麼。如果這是問題,我該如何正確刪除對象?
我對碰撞去除object1代碼:
local function onCollision(self,event)
if(event.object2.name == "bonus")then--if we hit a bonus ball
event.object2:removeSelf()--removes the bonus ball object from the scene
print("bonus collided")
display.remove(event.object2)
game.addToScore(10)--adds a value of 10 to the score
scoreText.text = game.returnScore()
Runtime:removeEventListener("enterFrame", event.object2)
else
composer.gotoScene("restart")
Runtime:removeEventListener("touch", onObjectTouch)
end
end
您是否在場景中創建顯示對象:create or scene:show?你應該在場景中創建它們:create,它只會被調用一次。場景:每次進入場景時都會調用show。 – Jefecito
是在場景中創建對象:創建。 –
我在當前代碼中看到了一些錯誤,但不知道它是否會導致錯誤: 1. event.object2:removeSelf()和display.remove(event.object2)做同樣的事情 2.'運行時:removeEventListener(「touch」,onObjectTouch)''可能不會被調用,因爲你在調用前的'gotoScene'之前 3.'Runtime:removeEventListener(「enterFrame」,event.object2)''應該刪除一個函數,而不是顯示對象 4.也許2和3切換? 你可以發佈完整的代碼,以便我可以看一看嗎? – Jefecito