効果音を鳴らす
続いてキャラクターがジャンプした際の効果音をつけていきます。ジャンプ用に「jump.mp3」という素材を用意している想定で進めます。
Soundsフォルダーに追加
BGMの場合と同様、Soundsフォルダーにjump.mp3をドロップします。
Inspectorウィンドウの3D Soundをオフにします。
キャラクターに追加
Sceneウィンドウのキャラクターにjumpをドロップします。Sceneウィンドウではドロップしづらい場合はHierarchyウィンドウのcharactorでも構いません。InspectorウィンドウでAudio Sourceコンポーネントが追加されていることを確認します。
「Play On Awake」チェックボックスのチェックを外します。これはコンポーネントが読み込まれた際に自動で再生する設定です。BGMのような場合はチェックした状態で構いませんが、効果音のような特定の操作をトリガーとするような場合はチェックを外します。
任意のタイミングで効果音を鳴らす
ジャンプしたタイミングで音声を鳴らす場合、プログラムで制御します。CharactorManager.csをエディタで開き、OnCollisionExit2Dメソッドを以下のように修正します。
<pre class="prettyprint"> /// <summary> /// 接触状態から離れた /// </summary> /// <param name="col"></param> public void OnCollisionExit2D(Collision2D col) { if (col.gameObject.name == "ground" || col.gameObject.name == "floor") { this._collisionList.Remove(col.gameObject); // 接触しているGameObjectが0の場合はジャンプしていると判定してアニメーションを開始する if (this._collisionList.Count == 0) { this._isJumping = true; this.audio.Play(); } } }
GameObjectに追加した音声はこのようにaudio.Playメソッドで鳴らすことができます。
対象となるGameObjectが一つの音を持つ場合は直接対象となるGameObjectに設定することも可能ですが、効果音が複数必要な場合や、GameObjectがたくさんあり、どのGameObjectに音声を紐づけたか分からなくなる場合などはSoundManagerのような管理クラスを検討する方が良いでしょう。
最後にデバッグを行い、キャラクターのジャンプ時に効果音が再生されることを確認します。
それぞれの音量を調整する
実際に実行してみるとBGMの音量が大きすぎて、効果音が聞こえ難かったのでボリュームを調整します。利用する素材によっては逆の場合などもあるでしょう。
Hierarchyウィンドウでbgmを選択します。
Volumeの値を1から0.7に変更します。
デバッグしてBGMの音量が小さくなっていることを確認します。大きすぎる場合はもう少し小さい値にするなど調整すると良いでしょう。
まとめ
Unityでは非常に簡単に音声ファイルが扱えることがお伝えできたでしょうか? 音声を鳴らすことで、ゲームの完成度がぐっと高まりますので、ぜひ、ゲームに音声をつけてみてください。
次回は、一面から二面へとシーンを切り替える方法を紹介します。