Swift 3: быстрое воспроизведение звуков на AVAudioPlayerNode
Я делаю основную игру и пытаюсь сделать для нее звуки хитов. Я заставил их играть на разных полях с помощью Rhythmic Fistman, но теперь у меня возникла новая проблема - она запаздывает, если я пытаюсь играть в них очень быстро. Это может показаться не большой проблемой, но в игре, которую я разрабатываю, всякий раз, когда вы двигаете пальцем, есть шанс, что он может издать хитовый звук, поэтому он становится довольно медленным, особенно с мультитачем.
В настоящее время у меня есть два узла для двух каналов в AVAudioEngine, поэтому я могу воспроизводить два совпадения одновременно, и я использую это для остановки одного из этих узлов, чтобы он мог воспроизводить новый звук:
if playerNode.isPlaying {
playerNode.stop()
playerNode.play()
}
playerNode.scheduleFile(file, at: nil, completionHandler: nil)
Проблема в том, что isPlaying всегда возвращает true независимо от того, воспроизводится ли звук на самом деле или нет, поскольку кажется, что он возвращает false, только если вы выполняете playerNode.stop(), и по какой-то причине он очень запаздывает, фактически он менее запаздывает чтобы играть тонны хитов один за другим.
Я думал, что простым решением было бы вместо сброса узла просто не воспроизводить хит, но поскольку isPlaying всегда возвращает true, я не могу этого сделать. Есть ли более быстрый способ заставить звуковой узел воспроизводить звук?