我正在用SpriteKit構建我的第一個項目,但我無法弄清楚這部分。SpriteKit - 當敵人死亡時如何阻止聲音
我的項目包括敵方直升機飛入屏幕。每個敵人在14秒左右播放一個聲音文件。這不是一個循環。它包括敵人在進入屏幕前接近的聲音以及在屏幕上移動時的更多聲音fx。問題是,當我殺死其中一架直升機時,即使敵方直升機節點已從現場撤離,聲音也會繼續播放。
我嘗試過使用playSoundFileNamed動作,但我知道那些無法停止。
我試過使用SoundManager但是因爲所有的敵人都有相同的文件ID,所以如果我停下來,它會停止所有的人,即使是在屏幕上。
我讀過我應該使用OpenAL,但我找不到解釋如何在播放每個聲音時添加某種ID以瞭解停止哪個聲音的源代碼。
與AVAudioPlayer相同。我試圖爲每個敵人創建一個玩家,但由於某種原因,runBlock SKAction只是忽略了這個代碼,並且從來不會播放聲音。奇怪的。我還認爲AVAudioPlayer比處理聲音效果更適合播放背景音樂。
有沒有某種聲音引擎可以幫助解決這個問題?
AVAudioPlayer做工精細,使用它。 – Roecrew
我現在嘗試使用AVAudioPlayer,並且能夠播放聲音,甚至可以將所有玩家(每個敵人一個)放在一個陣列中,以便我可以暫停它們。問題在於,當敵人從場景中移出時,聲音仍在繼續播放。我嘗試在檢測到聯繫人時刪除節點使用removeAllActions啓動的所有操作(其中包括AVAudioPlayer操作),但仍不起作用。聲音繼續播放。不知道我做錯了什麼。 – Drowned
發佈與聲音問題相關的代碼。您使用AVAudioPlayer並將每個實例保存在一個數組中,似乎都是正確的。所以問題必須出現在代碼的某個部分。 – sangony