PICO-8スネークゲーム、「ピコニョロ」で、繰り返し処理内でのサウンド再生を一度だけしたいので、そのように動く処理を書きました。
PICO-8では、30分の1、もしくは60分の1秒で、処理が繰り返されています。
入力の読み取り、座標変更、描画については、毎度処理を実行すればよいのですが、サウンド再生となると、話は変わってきます。
サウンド再生の命令 sfx() や music() は、実行されると、はじめから音を鳴らします。
その為、繰り返し処理内で命令を書くと、毎度再生されることになるので、音の最初の部分だけが細かく再生され、「ビビビビビ〜」といった感じになり、思うように再生されません。
そこで、自分で一度だけ再生する処理を書くことにしました。
処理としては、bool値のテーブルを作り、その値を判別して音を再生するようにするのです。
そうすれば、一番はじめだけ再生されて、あとは再生されなくなります。
再生許可スイッチを設けるのです。
実装してみたので、テストしてみました。
ゲーム中にボタンを押すと、再生許可スイッチをチェックして、音が再生されるようにしました。
すると、ボタンを押すと音が鳴り、その後ボタンを押しても音は鳴りませんでした。
成功です(多分)。
スイッチがちゃんと効いているか、スイッチの中身も表示してみました。
割当の効果音ナンバーは30(テーブル内では1から始まるので、+1させて、31番)が、falseと表示されています(trueなら再生可)。
これで、様々なSEの箇所に実装していきます(何度も書くので、関数化しました)。
コメント