0

基本的なゲームを作っていて、そのヒット音を作ろうとしています。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 を返すため、これを行うことはできません。オーディオノードにサウンドを再生させるより速い方法はありますか?

4

1 に答える 1

0

結局、scheduleBufferが必要だったようです

于 2016-10-14T23:01:43.183 に答える