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

今回はゲームっぽくする為にUnityでBGMの設定と細かなところに効果音を設定してみます。

BGM(Background Music)はゲーム中にずっと流す音でループ再生して永遠に流れるようにします。

効果音はインスペクタで音声を指定し、スクリプトで音声を鳴らすようにします。

BGMは常に流れるのでMainCameraに設定し、効果音は敵が攻撃してくる時と剣を振る時に鳴らします。

↑のような感じにゲームに豪華さがうまれます。(^^)/

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

スポンサーリンク

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

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

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

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

BGMに使う音声は

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

Free Pack→Short epic trailer(free)をAudio SourceのAudio Clipに選択しました。

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

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

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

敵の行動を処理するスクリプトEnemyにフィールドを宣言します。

attackSoundにはFree Pack→Monster screams→Monster screams – 57を選択しました。

Startメソッド内に

とコンポーネントを取得する処理を追加します。

AudioSourceは

Unityのエフェクトを使い、敵キャラの出現をわかりやすくします。エフェクトにはパーティクルをプレハブにしたものを使用し、スクリプトから敵の位置にインスタンス化していきます。

で使っているので、すでに追加されています。追加されてない場合は追加してください。

スクリプトから追加するようにAppearSEスクリプトでしている場合は追加処理を削除した処理に書き換えます。

あとはEnemyスクリプトのSetStateメソッドのAttack状態へと変更する処理で音を鳴らすようにします。

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

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

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

を参照してください。

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

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

主人公のインスペクタのAdd ComponentからSound→Audio Sourceを取り付けておきます。

AssetStoreでオーディオ→効果音→武器のBlade Soundsをインポートしました。

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

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

を参照してください。

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

を宣言します。

attackSoundにはBlade Sounds→Slashing→Slash1を設定しました。

StartメソッドにAudioSourceコンポーネントを取得する処理を記述します。

ProcessMyAttackスクリプトのAttackStartメソッドが剣を振り始める時に実行されるので、剣を振る音もそこで鳴らす事にします。

装備をスクリプトからインスタンス化しひとつしか持たないようにしている場合はequipの子要素の1番目が武器になるので、その武器にSwordタグが設定されているかどうかを調べ、Swordであれば攻撃用の音声を鳴らしています。

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

こうする事で、武器でなければ剣を振った時の音をならさないようにします。

持ち物にタグを指定すれば鳴らす音を変更させるという事もできるようになります。

終わりに

これでBGM、敵キャラの声、剣を振る音を付ける事ができました。

やはり音声があるとグッとゲームっぽくなりますね~。

敵が声を発するのは攻撃開始時にしてますが、主人公と同じようにアニメーションイベントの受け取りに反応して音声を鳴らすようにしてもいいですね。

でも攻撃開始時の方が敵が攻撃するぞ!というのがわかって良いのかも?悪いのかも?

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

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます