2014-01-26 68 views
0

我有一拍舉起手來遊戲,如下圖所示,如果敵人與我的性格碰撞的「衝」的聲音在計時器上打出:科羅娜SDK催生對象

local function hitSound() 
local hsound = math.random(#sfx.hit) 
audio.play(sfx.hit[hsound]) 
end 

- - - - - - - - - - - - - - - - - - - - - - - - - -字符碰撞---------------

local function guyCollision(self, event) 
if event.other.type == "enemy1"then 

if event.phase == "began" then 
hitTimer = timer.performWithDelay(500,hitSound,0) 
event.other:setSequence("punch") 
event.other:play() 
end 

if event.phase == "ended" then 
timer.pause(hitTimer) 
end 

當我的角色正在下降只是一個敵人的同時也能正常工作,但如果有一個以上的催生敵人(其中有通常是)當我殺死他們的衝擊聲r時與我的角色戰鬥emains。 另外,當我呼叫audio.fadeout()時,我的角色死亡拳擊聲音不會與其他聲音/音樂淡出:s

有人建議我分配計時器使用它的特定敵人索引在表中,但我不確定如何做到這一點...這是最好的方式嗎?我只是不知道如何獲得enemys目前的指數..任何幫助非常感謝!

繼承人我的敵人產卵代碼:

local spawnTable2 = {} 


local function spawnEnemy() 
enemy1 = display.newSprite(group, sheetE, sequenceData2) 
enemy1.x=math.random(100,1300) 
enemy1.y=math.random(360,760) 
enemy1.gravityScale = 0 
enemy1:play() 
enemy1.type="coin" 
enemy1.objTable = spawnTable2 
enemy1.index = #enemy1.objTable + 1 
enemy1.myName = "enemy" .. enemy1.index 
physics.addBody(enemy1, "kinematic",{ density = 1.0, friction = 0.3, bounce = 0.2 }) 
enemy1.isFixedRotation = true 
enemy1.type = "enemy1" 
enemy1.enterFrame = moveEnemy 
Runtime:addEventListener("enterFrame",enemy1) 
enemy1.objTable[enemy1.index] = enemy1 
return enemy1 
end 

回答

1

我覺得你的問題是,你的hitTimer變量可能被覆蓋,並且您只能取消最後一個。你可能可以這樣做:self.hitTimer來解決它。

Rob

+0

感謝搶劫,self.timer沒有工作,因爲碰撞是在主角上,而不是敵人。我通過使用event.other.timer和timer.cancel(event.other.timer)來實現它。我現在遇到的問題是當我的角色死亡和audio.fadeOut被稱爲衝孔不會淡出。我已經嘗試設置enemy1.timer = nil和timer.cancel(enemy1)(發生錯誤),但它仍然播放,當我暫停遊戲和audio.pause被稱爲衝孔沒有暫停,ive got aroundthis bu setting主音量爲零,但這是不可行的,當我的角色死亡..任何建議? – user3059109

+0

順便說一句,當我的角色死亡時,我停止enemiess產卵,所以新的碰撞不是問題 – user3059109