【Unity 2Dゲーム入門】2Dアクションゲームを作る(3/3)

【Bfxr】サウンドエフェクトを作成しゲームの効果音として設定する

Posted by 51n1 on 25 Feb, 2023

もくじ

1. 【Unity】VVVVVVスタイルに挑戦する
2. 【FL Studio】8bitサウンドを作成しゲームBGMとして使う
3. 【Bfxr】サウンドエフェクトを作成しゲームの効果音として設定する

Bfxrでサウンドエフェクトを作る

本ページではサウンドエフェクト(SE)の簡易な作成方法について紹介したいと思います。今回、SE作成には「Bfxr」というソフトウェアを使います。「Bfxr」はSEを簡単にすばやく作成できるツールのため、初心者の方には最適なツールだと思います。

「Bfxr」はこちらのサイト「 https://www.bfxr.net/」からダウンロードできます。

「Bfxr」についてはYouTuberのひろはす氏の解説しているYouTubeビデオもありますので、そちらもおすすめです。

全部無料!レトロゲーム風のBGM、効果音の作り方【Magical 8bit Plug】【Bfxr】

「Bfxr」での音作りですが、ウィンドウ左上にあらかじめ音色がプリセットされたテンプレートボタンがあり、それらをクリックするとランダムにパラメータが設定されたサウンドを自動で生成してくれます。基本的にはそのテンプレートを使ったサウンド自動生成機能を利用し、好きなサウンドが出るまで繰り返し生成する方法が最も簡便なやり方だと思います。

以下の3種類のSEをそれぞれ「Bfxr」の「Jump」、「Explosion」、「Powerup」を使って自動生成します。気に入ったサウンドが作成されたら、「Export Wav」ボタンをクリックしてWaveファイルとして保存します。( 3.1)

  • SE1:スペース押下(重力の上下反転アクション)時のサウンドエフェクト
  • SE2:トラップにあたった時のサウンドエフェクト
  • SE3:ゴールに触れたときのサウンドエフェクト

3.1 Bfxr Main Window

もちろん、パラメータを手動で調整して出力することもできます。「Bfxr」を使えば、手軽にすばやくSEを作成できますので、ゲームのプロトタイプのSE等で利用するのにとても便利だと思います。

作成したサウンドエフェクトをUnityで設定する

BGMをインポートした時と同様に出力したWaveファイルをProjectウィンドウのAsset配下にドラッグ&ドロップでインポートします。( 3.2)

3.2 Unity Project Window

今回使用するSEはPlayerのイベントやアクション時に再生したい音ですので、PlayerにAudio Sourceコンポーネントを追加します。Inspectorのプロパティは特に変更する必要はありません。

SEは任意のタイミングで音を再生する必要がありますので、C#スクリプトでサウンド再生の処理を実行します。作成するスクリプトの主なポイントとコードは以下となります。

  1. AudioSourceコンポーネントを参照するための変数を用意します。
    AudioSource audioSource;
  2. サウンドファイルを参照するためのAudioClip型の変数を用意します。「SerializeField」を付けてInspectorから割り当てられるようにします。
    [SerializeField] AudioClip jumpSound;
  3. Startメソッド内でGetComponentを使いAudioSourceを参照させます。
    audioSource = GetComponent<AudioSource>();
  4. PlayOneShotメソッドを実行しサウンドを再生させます。
    audioSource.PlayOneShot(jumpSound);

以下のコードはサウンド再生に関連する部分のみ記載しており、それ以外のコードは省略しています。そのため、仮にこのスクリプトをそのまま実行しても正常には実行されない可能性がありますので注意して下さい。

// PlayerManager.cs
public class PlayerManager : MonoBehaviour
{
    AudioSource audioSource; // ----- (1)
    [SerializeField] AudioClip jumpSound; // ----- (2)

    void Start()
    {
        audioSource = GetComponent<AudioSource>(); // ----- (3)
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Jump();
        }
    }

    void Jump()
    {
        audioSource.PlayOneShot(jumpSound); // ----- (4)
    }
}

スクリプト保存後にInspectorで各サウンドファイルを割り当てます。( 3.3)

3.3 Player Inspector Window

サウンド追加後のゲームデモ

My VVVVVV with BGM & SE