2016-10-14 23 views
0

我正在制作一款基本游戏,我正在尝试为它制作打击声。在Rhythmic Fistman的帮助下,我让他们以不同的方式进行比赛,但是现在我遇到了一个新问题 - 如果我尽快地尝试打法,我会遇到一些新问题。这似乎不是一个大问题,但在我正在开发的游戏中,无论何时移动手指,都有可能产生撞击声,因此速度会非常快,特别是使用多点触控。Swift 3:在AVAudioPlayerNode上快速播放声音

目前我有两个通道的两个节点在AVAudioEngine所以我可以一次打两个hitsounds,和我用这个来阻止这些节点之一,所以它可以起到一个新的声音:

if playerNode.isPlaying { 
    playerNode.stop() 
    playerNode.play() 
} 
playerNode.scheduleFile(file, at: nil, completionHandler: nil) 

问题在于,无论声音是否真的在播放,isPlaying总是返回true,因为它似乎只在播放playerNode.stop()时才返回false,并且由于某种原因它非常滞后,实际上它很少一个接一个地玩一大堆hitsounds。

我认为一个简单的解决方案,而不是重置节点,只是不播放hitsound,但由于isPlaying总是返回true我不能这样做。有没有更快的方法让音频节点播放声音?

+0

好吧,我尝试使用scheduleBuffer不是与.interrupts作为选项,它似乎有(奇怪)的工作,但我会离开这个岗位开放的另一天在我正在做一些可怕的事情 – MysteryPancake

回答