我正在創建一個遊戲,用戶使用jetpack控制角色。當噴氣揹包與鑽石相交時,我會將鑽石加入其中,然後發出聲音。然而,聲音會讓遊戲暫停十分之一秒左右並擾亂遊戲流程。這是我使用的代碼:AVAudioPlayer播放時遊戲滯後
var diamondSound = NSBundle.mainBundle().URLForResource("diamondCollect", withExtension: "wav")!
var diamondPlayer = AVAudioPlayer?()
class GameScene: SKScene{
override func didMoveToView(view: SKView) {
do {
diamondPlayer = try AVAudioPlayer(contentsOfURL: diamondSound)
guard let player = diamondPlayer else { return }
player.prepareToPlay()
} catch let error as NSError {
print(error.description)
}
}
再後來:
override func update(currentTime: CFTimeInterval) {
if character.intersectsNode(diamond){
diamondPlayer?.play()
addDiamond()
diamond.removeFromParent()
}
}
而且我使用雪碧套件,如果該事項。任何幫助是極大的讚賞!
我會嘗試使用'SKAudioNode'或'SKAction.playSoundWithFileNamed'第一,因爲他們在建造時,是與SpriteKit一起使用。此外,由於您正在嘗試捕捉,因此您不需要警惕,我會將其刪除。如果從AVAudioPlayer返回一個零,它會觸發捕獲 – Knight0fDragon
我看到的問題是,你可能會多次發射播放,添加一個檢查只播放一次,AVAudioPlayer有一個「玩」布爾值,你可以檢查 – Knight0fDragon
只是因爲你從父母中刪除鑽石,並不意味着鑽石已經死亡,即使鑽石不在現場,你的相交節點仍然會通過 – Knight0fDragon