CodeZine(コードジン)

特集ページ一覧

速習 Unity 2Dゲーム開発
~第12回 BGMや効果音を鳴らす

速習 Unity 2Dゲーム開発 第12回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/03/02 14:00
目次

効果音を鳴らす

 続いてキャラクターがジャンプした際の効果音をつけていきます。ジャンプ用に「jump.mp3」という素材を用意している想定で進めます。

Soundsフォルダーに追加

 BGMの場合と同様、Soundsフォルダーにjump.mp3をドロップします。

jump.mp3をドロップ
jump.mp3をドロップ

 Inspectorウィンドウの3D Soundをオフにします。

キャラクターに追加

 Sceneウィンドウのキャラクターにjumpをドロップします。Sceneウィンドウではドロップしづらい場合はHierarchyウィンドウのcharactorでも構いません。InspectorウィンドウでAudio Sourceコンポーネントが追加されていることを確認します。

Inspectorウィンドウを確認
Inspectorウィンドウを確認

 「Play On Awake」チェックボックスのチェックを外します。これはコンポーネントが読み込まれた際に自動で再生する設定です。BGMのような場合はチェックした状態で構いませんが、効果音のような特定の操作をトリガーとするような場合はチェックを外します。

Play On Awakeのチェックを外す
Play On Awakeのチェックを外す

任意のタイミングで効果音を鳴らす

 ジャンプしたタイミングで音声を鳴らす場合、プログラムで制御します。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を選択します。

Hierarchyウィンドウでbgmを選択
Hierarchyウィンドウでbgmを選択

 Volumeの値を1から0.7に変更します。

Volumeの値を1から0.7に変更
Volumeの値を1から0.7に変更

 デバッグしてBGMの音量が小さくなっていることを確認します。大きすぎる場合はもう少し小さい値にするなど調整すると良いでしょう。

まとめ

 Unityでは非常に簡単に音声ファイルが扱えることがお伝えできたでしょうか? 音声を鳴らすことで、ゲームの完成度がぐっと高まりますので、ぜひ、ゲームに音声をつけてみてください。

 次回は、一面から二面へとシーンを切り替える方法を紹介します。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:速習 Unity 2Dゲーム開発

もっと読む

著者プロフィール

  • 西村 誠(ニシムラ マコト)

     Microsoft MVP Windows Platform Development。  Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。  ブログ:眠るシーラカンスと水底のプログラマー  著書:基礎から学ぶ Windows...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5