UnityでBGM、敵キャラの声、剣を振る音をつける

今回はゲームっぽくする為にUnityでBGMの設定と細かなところに効果音を設定してみます。
BGM(Background Music)はゲーム中にずっと流す音でループ再生して永遠に流れるようにします。

効果音はpublicで音声を指定し、スクリプトで音声を鳴らすようにします。
BGMは常に流れるのでMainCameraに設定し、効果音は敵が攻撃してくる時と剣を振る時に鳴らします。

懐中電灯を持っている時は鳴らさないようにするので、今持っているのがただの持ち物か武器かを判定して区別する必要があります。

スポンサーリンク

MainCameraにAudio Sourceコンポーネントを追加する

Audio Sourceコンポーネントの追加


MainCameraにAdd Component→Audio Sourceを追加し、AudioClipを設定します。

PlayOnAwakeでインスタンスが登場したと同時に再生されます。Loopにチェックを入れているので、音声が永遠に流れます。

これでBGMの設定は終了です。

敵がうめき声を出すようにする

次に敵が攻撃する時にうめき声を出すようにします。

Asset Store→オーディオ→その他→Free music packをインポートしました。

敵の行動を処理するスクリプトMove Enemy(今となっては名前がおかしいですが・・・)に

を宣言し、Start関数内で

audioSource = GetComponent(AudioSource);

とコンポーネントを取得します。

AudioSourceは

Unityのエフェクトを使い、敵キャラの出現をわかりやすくする
Unityのエフェクトを使い敵がフィールドに出現した時に演出をして出現した事がわかるようにします
で使っているので、すでに追加されています。追加されてない場合は追加してください。

あとは攻撃時に音を鳴らすだけです。

これで敵キャラが攻撃時にうめき声をあげる事になります。

敵キャラの攻撃機能に関しては

Unityで敵キャラが主人公に近づいた時に攻撃をしてくる機能
Unityで主人公が敵に近づいた時に敵が主人公を攻撃してくる機能を作成します
を参照してください。

剣を振った時に効果音を鳴らす

最後に主人公が剣を振る時に音声を鳴らす処理です。

主人公の攻撃機能に関しては

Unityで主人公キャラが敵を攻撃出来るようにする機能
Unityで主人公キャラが剣を振って敵キャラを攻撃出来るようにする機能を作成します
を参照してください。

剣を振る時ということはアニメーションイベントAttackStartを受け取った時に音声を鳴らせばいいので、ProcessMyAttackスクリプト内に

を宣言します。
ChangeEquipは装備を変更する時に装備品が何かという情報を持っているので、今何を装備しているかを取得する為に使います。

まだキャラクターのステータスを管理するスクリプトを作成せず、それぞれのスクリプトで値を保持しているので現状はこのやり方をしています。

上記の処理をStart関数内に書きます。GetComponentInChildrenは自分の子要素の中から指定のコンポーネントを取得出来ます。

AttackStart関数内で上記の処理を記述します。

武器となるインスタンスまたはプレハブにWeaponというタグを作り、tagに指定しておきます。

こうする事で、武器でなければ剣を振った時の音をならさないようにします。
持ち物にタグを指定すれば鳴らす音を変更させるという事もできるようになります。

これでBGM、敵キャラの声、剣を振る音を付ける事ができました。
やはり音声があるとグッとゲームっぽくなりますね~。

次回はキャラクター毎に独自のステータス保持スクリプトを持って管理出来るようにしてみます。