第08回

音をつける

プロジェクトの準備

  1. このページは 2Dシューティングゲーム を初心者用に説明したものです。
    ダウンロードした「第07回プロジェクト」から Assets/Scene/Stage.unity のダブルクリックで起動します。
    Script にエラーがあるらしく、このままでは動かないのでエラーを修正します。
    Assets/Script には Background.cs, Bullet.cs, DestroyArea.cs, Emitter.cs, Enemy.cs, Explosion.cs, Player.cs, Spaceship.cs が格納されています。
    これらの Script から次の箇所を修正して下さい。
    1. using に次の3行を指定して下さい。
      全ての Script に3行とも必要な訳ではありませんが、不足するとエラーになるので記述する方が無難です。
      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      
    2. .velocity が使われている行を次のように修正して下さい。
      【修正前】
      rigidbody2D.velocity =  ・・・(任意の文字列)
      
      【修正後】
      GetComponent<Rigidbody2D>().velocity = ・・・(任意の文字列)
      
    3. Background.cs の次の行を修正して下さい。
      【修正前】
          renderer.sharedMaterial.SetTextureOffset ("_MainTex", offset);
      
      【修正後】
          GetComponent<Renderer>().sharedMaterial.SetTextureOffset ("_MainTex", offset);
      
    4. これまで何度も修正しているので、不明な点は今までのソースを参照して下さい。
  2. 修正が終わると、画面下の赤いエラーメッセージが消えます。
    再生ボタンをクリックすると、背景をスクロールしながら Enemy が波のように押し寄せます。
    矢印キーで Player を操作できることも確認して下さい。
    確認が終わるとメニューの File→Save Scene で保存して下さい。

音をつける

  1. 今回は3種類の音を設定します。
    MP3 の演奏は Back Music に掲載しています。
    効果音を鳴らす方法は 爆発音 に掲載しています。
    1. ゲームの背景にバックミュージック(*.mp3)を流します。
    2. ショット音(*.wav)を流します。
    3. 爆発のアニメーションに爆発音を設定します。
  2. バックミュージックの演奏は簡単です。
    Assets/Sounds/BGM/bgm.mp3 ファイルをシーンビューへドラッグ&ドロップします。
    インスペクターにある Loop にチェックを入れます。
    これだけで再生するとバックミュージックが流れます。
  3. ショット音を流します。
    ヒエラルキービューの Player ゲームオブジェクトを選択して Inspector を表示します。
    Add Component ボタンをクリックして Audio Source コンポーネントをアタッチします。
    アタッチしたら必要なパラメータを設定します。
    Audio Clip には Sounds/SE にある shoot をドラッグ&ドロップして格納してください。
    Play On Awake のチェックを外し、ゲームオブジェクト作成時に音を鳴らさないようにします。
    BGM と音の大きさが同じで少し聞きづらいので Volume を 0.3 にします。
    最後に Pitch を 0.64 にしましょう。

  4. Player.cs を修正します。
    Start() 関数でゲームを開始するとショット音を鳴らします。
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Player : MonoBehaviour
    {   // Spaceshipコンポーネント
        Spaceship spaceship;
        IEnumerator Start ()
        {   // Spaceshipコンポーネントを取得
            spaceship = GetComponent<Spaceship> ();
            while (true) {
                // 弾をプレイヤーと同じ位置/角度で作成
                spaceship.Shot (transform);
                // ショット音を鳴らす
                GetComponent<AudioSource>().Play();
                // shotDelay秒待つ
                yield return new WaitForSeconds (spaceship.shotDelay);
            }
        }
        void Update ()
        {   // 右・左
            float x = Input.GetAxisRaw ("Horizontal");
            // 上・下
            float y = Input.GetAxisRaw ("Vertical");
            // 移動する向きを求める
            Vector2 direction = new Vector2 (x, y).normalized;
            // 移動
            spaceship.Move (direction);
        }
        // ぶつかった瞬間に呼び出される
        void OnTriggerEnter2D (Collider2D c)
        {   // レイヤー名を取得
            string layerName = LayerMask.LayerToName(c.gameObject.layer);
            // レイヤー名がBullet (Enemy)の時は弾を削除
            if( layerName == "Bullet (Enemy)")
            {   // 弾の削除
                Destroy(c.gameObject);
            }
            // レイヤー名がBullet (Enemy)またはEnemyの場合は爆発
            if( layerName == "Bullet (Enemy)" || layerName == "Enemy")
            {   // 爆発する
                spaceship.Explosion();
                // プレイヤーを削除
                Destroy (gameObject);
            }
        }
    }
    
  5. 爆発音の設定も簡単です。
    Prefabs/Explosion の Inspector を表示して、Assets/Sounds/SE/boom をアタッチして下さい。
プロジェクトの詳細は 2Dシューティングゲーム から 「第08回 音をつける」を参照して下さい。
第08回 の完成したプロジェクトは、後部の「今回のプロジェクトファイルをダウンロード」からダウンロードすることが出来ます。

[Next Chapter ↓] Shooting-09
[Previous Chapter ↑] Shooting-07

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(Unity)