短い音を連続で鳴らしたい
AVAudioPlayer
を使えばできるんだけど、
すでに再生中の場合は、currentTime
プロパティを変更して、
先頭から鳴らすようにしたものの、思ったようにいかなかった。
もう少し具体的に説明すると、ステージをクリアするたびに、
残っているタイムがスコアに加算されるアレを実装したい。
で、上記の方法で鳴らしてみると、
途切れ途切れになったり、鳴り始めのアタック感がなくなったり、
とにかく、それっぽくない。
音が短すぎるのか、再生間隔が短過ぎるのか原因は分かんない。
結論から言うと、波形編集で鳴らしたい間隔と同じ長さにしておいて、
鳴らす時にnumberOfLoops
プロパティに鳴らす回数をセットする。
もちろん、事前に鳴らしたい回数が分からないとダメだけど、
音の方は等間隔で連続再生される。
ただし、変更したスコアが描画されるタイミングと一致するかは別。
だって、描画の方はフレームレートが決まっているので。
でも、音の長さが分かっているので、SKAction
のwaitForDuration
を使って、
それっぽく同期をとることはできる。
実際、少しずれるけど、そこまで違和感はないと思う。
という訳で、あと2人日くらい。
おしまい。
Leave a Comment