基本的なゲームを作っていて、そのヒット音を作ろうとしています。Rhythmic Fistman の助けを借りて、さまざまなピッチで演奏するようにしましたが、新しい問題が発生しました。非常に速く演奏しようとすると遅れます。これは大した問題ではないように思えるかもしれませんが、私が開発しているゲームでは、指を動かすたびにヒット音が鳴る可能性があるため、特にマルチタッチではラグが非常に速くなります。
現在、AVAudioEngine の 2 つのチャネルに 2 つのノードがあり、一度に 2 つのヒットサウンドを再生できます。これを使用してこれらのノードの 1 つを停止し、新しいサウンドを再生できるようにしています。
if playerNode.isPlaying {
playerNode.stop()
playerNode.play()
}
playerNode.scheduleFile(file, at: nil, completionHandler: nil)
これの問題は、実際にサウンドが再生されているかどうかに関係なく、isPlaying が常に true を返すことです。これは、playerNode.stop() を実行した場合にのみ false を返すように見えるためです。大量のヒットサウンドを次々と再生します。
簡単な解決策は、ノードをリセットする代わりに、ヒットサウンドを再生しないことだと思いましたが、isPlaying は常に true を返すため、これを行うことはできません。オーディオノードにサウンドを再生させるより速い方法はありますか?