我正在创建一个游戏,用户使用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