【Unity】サウンド(BGM・効果音)のつけ方(ゲームの作り方チュートリアル「悪路王」その9)

悪路王 サウンド追加 ゲームの作り方

前回までの作業でゲームとしてはほぼ完成と言ってもよい出来となりました。しかしまだサウンドをつけていないのでプレイしているとちょっと寂しい気がします。

そこでここではBGMや効果音をつけてゲームをより楽しめるようにしてみましょう。

サウンド素材のインポート

まずはじめにサウンド素材をプロジェクトにインポートする必要があります。サウンド素材に関してはネット上に高品質なものが無料配布されていますので、適当に探してダウンロードしインポートしましょう。

今回必要なサウンド素材は次の3つです。

  1. BGM(ループ再生に対応した音源だとよい)
  2. ジャンプしたときの効果音
  3. ゲームオーバー時の効果音

なおサウンド素材を使う場合も配布サイトの利用規約をよく読んでルールを守って使うようにしてくださいね。

サウンドのつけ方

ではここからUnityでのサウンドのつけ方について解説していきます。今回は使うサウンドの種類が少ないので、一番シンプルなやり方でサウンドを再生することにします。

BGM

まずはBGMです。BGMの場合は空のゲームオブジェクトを作り、そこに「AudioSource」コンポーネントをアタッチして設定を行うだけでOKです。

具体的には下の画像のように設定します。

BGM用のAudioSourceの設定

  • オーディオクリップ:再生するBGMの音源を登録
  • ループ:BGMは繰り返し再生されるのでONにしておく
  • ボリューム:
    環境にもよりますが、1だと音量が大きすぎるので「0.2」くらいにしておくとよい

これでBGMが再生されるようになります。

効果音

次は効果音ですが、こちらは特定のタイミングで鳴らしたいのでC#スクリプトから制御する必要があります。今回はジャンプとゲームオーバーの時に音を鳴らすため、

  • Player
  • GameOverTrigger

のC#スクリプトにそれぞれ効果音を鳴らす処理を追記していきましょう。

Player.cs

using UnityEngine;

public class Player : MonoBehaviour
{

    [SerializeField]
    Rigidbody2D rigidBody2D;
    [SerializeField]
    Animator animator;
    [SerializeField]
    float jumpPower = 10;
    [SerializeField]
    float groundCheckRadius = 0.4f;
    [SerializeField]
    float groundCheckOffsetY = 0.45f;
    [SerializeField]
    float groundCheckDistance = 0.2f;
    [SerializeField]
    LayerMask groundLayers = 0;
    // 追加
    [SerializeField]
    AudioSource audioSource;
    [SerializeField]
    AudioClip jumpSound;

    // 省略

    // ジャンプ
    void Jump()
    {
        rigidBody2D.AddForce(jumpPower * Vector2.up, ForceMode2D.Impulse);

        // 追加
        audioSource.PlayOneShot(jumpSound);
    }

    // 省略

}

処理を追加できたらプレイヤーのゲームオブジェクトにAudioSourceコンポーネントをアタッチし、次のように設定してください。

効果音用のAudioSourceの設定

  • ゲーム開始時に再生:OFF
  • ボリューム:0.3

GameOverTrigger.cs

using UnityEngine;

public class GameOverTrigger : MonoBehaviour
{

    [SerializeField]
    GameManager gameManger;
    // 追加
    [SerializeField]
    AudioSource audioSource;
    [SerializeField]
    AudioClip gameOverSound;

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("Player"))
        {
            gameManger.GameOver();

            // 追加
            audioSource.PlayOneShot(gameOverSound);
        }
    }

}

こちらも処理を追加できたら、ゲームオーバー判定用トリガーのゲームオブジェクトにAudioSourceをアタッチして上と同様に設定を行ってください。

次のページ

これでゲームにサウンドを追加することができました。ゲームとしてはこれで完成となるので、次回はいよいよゲームをビルドして公開できるようにします。

【Unity】ゲームをビルドして公開する方法(ゲームの作り方チュートリアル「悪路王」その10)
前回までの作業でゲームが完成しました。ただこのままではゲームを公開できないので、最後にゲームを実際の環境で動くようにビルドする必要があります。 そこでここでは Unityでのゲームのビルド方法 作ったゲームはどこで公開すればいいか? といっ...