効果音を鳴らす
宝箱を空けたらガチャ、ドアを開けたらギ〜、階段を下りたらザッザッザッと鳴るようにしてみます。基本的にサウンドエンジン(2005/12/10)のWaveEngineを使うので簡単です。例によって効果音はザ・マッチメイカァズさんからお借りしています。
サウンドのロード
MainPanelでサウンド名を定義します。
// サウンド名 // サウンド番号は0, 1,・・・というように割り当てられる private static final String[] soundNames = {"treasure.wav", "door.wav", "step.wav"};
実際にロードしているのはloadSound()です。WaveEngineへロードします。
/** * サウンドをロードする */ private void loadSound() { // BGMをロード(略) // サウンドをロード for (int i=0; i<soundNames.length; i++) { try { WaveEngine.load("sound/" + soundNames[i]); } catch (UnsupportedAudioFileException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (LineUnavailableException e) { e.printStackTrace(); } } }
サウンドの再生
サウンドの再生(play)は適当なところにコードを追加しています。MainPanelのmainWindowCheckInput()を見てください。しらべるととびらのところに再生処理が入ってますね。さて階段を降りるときのサウンドはどこにいれればいいでしょう?
/** * メインウィンドウでのキー入力をチェックする */ private void mainWindowCheckInput() { ・・・ if (spaceKey.isPressed()) { // スペース // 移動中は表示できない if (hero.isMoving()) return; // しらべる TreasureEvent treasure = hero.search(); if (treasure != null) { // かちゃ WaveEngine.play(0); // メッセージをセットする messageWindow.setMessage( treasure.getItemName() + "を てにいれた。"); // メッセージウィンドウを表示 messageWindow.show(); // TODO: ここにアイテム入手処理を入れる // 宝箱を削除 maps[mapNo].removeEvent(treasure); return; // しらべた場合ははなさない } // とびら DoorEvent door = hero.open(); if (door != null) { // ぎー WaveEngine.play(1); // ドアを削除 maps[mapNo].removeEvent(door); return; } // はなす(略) } }
サウンドのレンダリング
サウンドエンジンを使う場合はレンダリングする必要があります。ゲームループに
WaveEngine.render();
を追加します。もっといろいろ効果音追加すると楽しそうです。