【Unity入門⑪】2Dアクションゲームで効果音を鳴らそう!

Unityで2Dアクションゲームを作ろう! Unity2D入門(シリーズ)

こんにちは!夜の街2Dアクションゲームを制作中の怪獣です🦖

前回の入門では「敵を踏んで倒す処理」を実装しました!


今回はそのアクションに効果音(SE)を追加して、より臨場感を出していきます!
具体的には、

  • 「ジャンプした時」
  • 「敵にぶつかってダメージを受けたとき」
  • 「敵を上から踏んで再ジャンプしたとき」

というタイミングでSEをつけていきます!

SEの鳴らす方法方は色々あると思いますが、今回はAudioSource と PlayOneShot を使った、簡単にできる方法で作っていきます!


この記事でやること

  • ジャンプしたときに「ピョン!」という音を出す
  • 敵にぶつかってダメージを受けたときに「ダメージ音」を出す
  • 敵を上から踏んで再ジャンプしたときにも効果音を出す

①AudioSourceを追加する

Unityで効果音を鳴らすには、主に次の2つを使います。

  • AudioSource
    音を再生するためのコンポーネント
  • AudioClip
    実際の音声データ

ざっくり言うと、AudioClipが音のデータ、AudioSourceがその音を鳴らす再生機です。

手順

以下の手順で、AudioSourceコンポーネントを追加します!

1.Hierarchyでプレイヤーオブジェクトを選択する。
2.Inspector の Add Component をクリック

Add Componentを押す

3.AudioSource を追加する

AudioSource の追加

勝手にSEが再生されないように、まずはこの2つを設定値をOFFにしておくのがおすすめです!

  • Play On Awake:OFF
  • Loop:OFF
AudioSource の設定値

②効果音ファイルを準備する

  1. 効果音を管理するフォルダを作り、その中に使用するSEファイル(.wavや.mp3)をいれます
    •  Assets/Audio/SEなど
効果音ファイルのフォルダ

今回は、ジャンプ音、ダメージ音を例に進めます!


③効果音を呼び出す処理を書く

Playerスクリプトに、効果音を鳴らす処理を書いていきます!
(★今回追加・・・前回入門記事から追加した処理です)

以下のタイミングにSEを鳴らす処理を追加します。

  • 敵を上から踏んで再ジャンプしたとき
  • 敵にぶつかってダメージを受けたとき
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
    [SerializeField] private AudioSource _audioSource;
    [SerializeField] private AudioClip _jumpSE;
    [SerializeField] private AudioClip _damageSE;

    // 敵に触れたときの処理
    private void _HitEnemy(GameObject enemy)
    {
        // 処理省略
        // ① プレイヤーが敵の上からぶつかった場合(踏んだとき)
        if (playerBottom >= enemyTop)
        {
          // 処理省略
          // ジャンプ効果音(踏んだときも再利用OK)
            if (_jumpSE != null)
                _audioSource.PlayOneShot(_jumpSE); // ★今回追加
        }
        // ② 横や下からぶつかった場合(ダメージを受ける)
        else
        {
            // 処理省略
            // ダメージ時の効果音を鳴らす
            if (_damageSE != null)
               audioSource.PlayOneShot(_damageSE); // ★今回追加
        }
    }
}

以下のタイミングにSEを鳴らす処理を追加します。

  • ジャンプしたとき
    // ジャンプ処理
    public void _OnJump(InputAction.CallbackContext context)
    {
        // 処理省略
        // ジャンプ時の効果音を鳴らす
        if (_jumpSE != null)
        {
            _audioSource.PlayOneShot(_jumpSE);  // ★今回追加
        }
    }

_audioSource.PlayOneShot()という処理で、指定した音を1回だけ再生するようにしています。
今回はこの PlayOneShot を使うことで、シンプルに効果音を鳴らしています!

④AudioSource、音声ファイルをアタッチする

このままだと音声ファイルとプログラム上が紐づいていないので、アタッチしていきます!

1.AudioSourceを追加済みのプレイヤーオブジェクトを選択する
2.Inspectorの _audioSource 欄にAudioSourceコンポーネントをドラッグする

AudioSourceコンポーネントをドラッグ

3.ソース上で定義した「JumpSE」、「_damageSE」に、音声ファイルをそれぞれドラッグします

音声ファイルをドラッグ

ここまで設定すれば全て完了です!


動作確認

ゲームを再生し、動作確認する

条件動作
スペースキーでジャンプピョン!と音が鳴る
敵に上から当たる敵が消えてジャンプ音
敵に横から当たるHPバーが減ってダメージ音

効果音をつけることでより2Dアクションゲームらしさが出てきました!



まとめ


最後まで読んでいただきありがとうございました!

今回は、Unityで効果音を鳴らす基本として、PlayOneShot を使った方を紹介しました。
効果音を追加すると、ジャンプやダメージなどの動きがわかりやすくなり、ゲームらしさも一気にアップします!
まずは今回の方法でシンプルに音を鳴らせるようになっておくと、今後ほかの効果音も追加しやすくなります!

この記事が少しでもゲーム制作のお役に立てたら嬉しいです🦖
次回の記事では、ゲーム内BGMを自動再生する方法を解説します!

コメント

タイトルとURLをコピーしました