人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

ぴこぴこ音

ゲームらしく効果音をつけてみます。今回つけるのは弾の発射音、エイリアンの断末魔、プレイヤーの爆発音です。ここではWAVEの再生(2004/10/3)と同じくAudioClipを使います。

AudioClipは同時再生ができないという問題があります。これを解決するにはJava Sound APIが必要です。Java Sound APIを使おうと思ったのだけど解説するほど完全には理解できていません・・・しっかり理解してから使おうと思います。

サウンドは例のごとくザ・マッチメイカァズからお借りしています。

invader07.jar

サウンド再生についてはWAVEの再生(2004/10/3)と同じなので難しくありません。MainPanelクラスでまとめてAudioClipを定義しています。

    // サウンド
    private AudioClip fireSound;
    private AudioClip crySound;
    private AudioClip bombSound;

コンストラクタでロードしています。

    // サウンドをロード
    fireSound = Applet.newAudioClip(
                    getClass().getResource("se/pi02.wav"));
    crySound = Applet.newAudioClip(
                    getClass().getResource("se/pi00.wav"));
    bombSound = Applet.newAudioClip(
                    getClass().getResource("se/bom28_a.wav"));

鳴らすのはplay()です。どこで鳴らしているかはコードをご覧下さい。

    // サウンドを再生
    fireSound.play();
    crySound.play();
    bombSound.play();

先ほど説明したようにAudioClipは同時再生ができません。つまり、ある音が鳴っているときに他の音を鳴らそうとしても鳴りません。この例では弾を連続発射しているときにときどき爆発音が鳴らない場合があります。

これを完全に解決するにはJava Sound APIを使うしかありません。ただできるだけ再生時間が短い効果音を使うことである程度回避できます。

まああんまりぴこぴこなると耳障りでうるさいんですがね(笑)