2014-01-24 45 views
0

我有一個小問題,我在尋找一個簡單的解決方案,
在我的遊戲,如果子彈觸及到特定ennemy,這一目標應刪除重生otherwhere,
我使用的是自碰撞事件做出指示單給每個ennemy,
問題是,自碰撞功能只適用,如果他承認目標,但我刪除第一在我的碰撞功能中,我的功能已經不存在了。它只有第一次運作。
我希望我的問題是可以理解的,

這裏是代碼的一個例子:刪除功能的自對象[電暈SDK]

local ennemy 
ennemy = display.newRect(0,0, 20, 50) 
transition.to(ennemy, {time = 2000, x = 240, y = 160}) 

local function onCollision(self,event) 
    display.remove(bullet) 
    display.remove(ennemy) 

    ennemy = display.newRect(0,0, 20, 50) 
    transition.to(ennemy, {time = 2000, x = 240, y = 160}) 
end 

ennemy.collision = onCollision 
ennemy:addEventListener("collision", ennemy) 
+1

我相信很多科羅娜球迷(啤酒愛好者?)會很樂意幫助你。發佈一個代碼示例,顯示迄今爲止您已編碼的內容,以及哪些內容無法正常工作,這確實會有所幫助。 – robnick

+0

好的,非常感謝robnick,我沒有發佈我的代碼,因爲它太長了,但我會嘗試重新編寫一個代碼,這也是我的問題。 Corona SDK是一個簡單的移動開發平臺;)檢查出來! http://coronalabs.com/ – Fannick

回答

1

你只對第一個敵人對象做addEventListener(),在碰撞後,你有一個全新的敵人對象也需要它的碰撞監聽器設置。

local onCollision -- forward declare onCollision() so we can use it from addEnemy() 
local enemy 

local function addEnemy() 
    enemy = display.newRect(0,0, 20, 50) 

    -- new object so need to assign collision listener again 
    enemy.collision = onCollision 
    enemy:addEventListener("collision", enemy) 

    transition.to(enemy, {time = 2000, x = 240, y = 160}) 
end 

local function onCollision(self,event) 
    display.remove(bullet) 
    display.remove(enemy) 

    addEnemy() 
end 

-- Add first enemy… 
addEnemy()