[Unity]効果音の付け方

Unity基礎

どうも、そーすけです。
ゲームを作り始めてまだそんなに経ちませんが、最近気づいたことがあります。
それは…….

ゲームに音をつけるだけでゲームっぽくなる!!

ゲーム制作時、試しに自分で遊んでみるのですが、何か物足りなさを感じておりました。
「ゲームのはずなんだけどなんかゲームっぽくない」

そこで音を全くつけていなかったので試しにつけてみると……

一気にゲームっぽくなった!

音をつけるだけでこんなに変わるのかと感動してました。

そこで今回は

  • 効果音の探し方
  • 効果音のつけかた
  • スクリプトの書き方

など、主に効果音について紹介していこうと思います。
BGMに関してはまた別の記事で紹介します。

ゲームクリア時の音、攻撃した時の音、様々なところに効果音をつけてゲームの完成度を上げましょう!

事前準備

どんな効果音をつけたいか考える

まずどこにどんな効果音をつけたいかを考えましょう。
キャラクターがジャンプする音、攻撃する音、はたまたステージクリア時の音なのか…..

考えればキリがないですが、とりあえず試しに一つ考えてみましょう。

今回僕はキャラクターがジャンプする音をつけたかったので、
それに沿って解説していきます。

効果音を探す

どんな効果音をつけたいか決めたなら、効果音を探していこうと思います。

こういう時に役立つのがフリー素材サイトです。
調べればいろんなサイトが出てくるのですが、今回はその中の「効果音ラボ」というサイトを例に解説していきます。

下記のURLから「効果音ラボ」にアクセスしてください。
効果音ラボ→https://soundeffect-lab.info/

上の画像のようなページが表示されたら、右上の検索欄から先ほど決めた効果音を検索してみましょう。
今回は「ジャンプ」と入れて検索してみます。

このようにジャンプ一つにしても色々な効果音が出てきます。

効果音の題名を押すと試聴できます。
気に入ったのがあれば、右のDLボタンを押してダウンロードしてください。

今回は「二ュッ2」をダウンロードしました。
ダウンロードできれば、効果音探しは完了です。

ちなみにこのようなフリー素材サイトを使う場合は、しっかり利用規約を読んでおくことをお勧めします。
商用利用など色々な制限があるサイトもあるのでご注意を。

効果音の設定

unityに効果音を入れる

ダウンロードしてきた効果音をunityに入れていきます。
これはすごく簡単。

unityのアセットフォルダにドラッグ&ドロップするだけです。
この時、アセットフォルダ内に音楽フォルダを作っておくと整理整頓されてみやすいと思います。

スクリプトを書く

効果音を出すためのスクリプトを書きましょう。

自分の操作するキャラクター操作時の効果音なので
キャラクターに設定されているスクリプトにコードを書いていきます。

わかりやすくするため、効果音以外の処理(ジャンプ処理など)は省きます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerManager : MonoBehaviour
{
  public AudioClip jumpSE; //ジャンプ音
  private AudioSource audioSource; //オーディオソース    
   void Start()
    {
        audioSource = this.gameObject.GetComponent<AudioSource>(); //オーディオソース取得
    }

   void Jump()
    {
        //ジャンプの処理を書く
        audioSource.PlayOneShot(jumpSE); //効果音を一回だけ鳴らす
    }
}

こんな感じでコードを追加してください。

コードの流れとしては

  • 効果音を格納するための変数とオーディオソースの変数を宣言
  • GetComponentメソッドでオーディオソースを取得
  • ジャンプ処理の際に、PlayOneShotメソッドで音を一回鳴らす

PlayOneShotメソッドなどの音を鳴らすメソッドは他にも色々あります。
それについては他の記事で紹介しようと思います。

効果音をアタッチ

効果音をアタッチしていきます。
スクリプトを設定したオブジェクトをヒエラルキーから選んでください。

下の画像のようにアッタッチしたい効果音をインスペクターの「Jump SE」にドラッグ&ドロップしてください。

これでアタッチは完了です。

では早速再生ボタンを押して、試しに実行してみましょう 。

あれ、ジャンプした瞬間にフリーズしちゃった。
しかも下のようなエラーが。。。
どういうこと?全然わからない。。。

と、思ったあなた。
大丈夫です。このエラーが出るのは当然です。

あることをすれば改善できますので次の項目にいきましょう。

効果音が鳴らない時

Audio Sourceコンポーネントを設定

ということで効果音が鳴らなかったら
まず効果音スクリプトを設定したオブジェクトに「Audio Source」コンポーネントが設定されているか確認してみてください。

ここまで記事通りにやってきた方は「Audio Source」コンポーネントが設定されていないので設定していきましょう。

インスペクターの一番下から新しいコンポーネントを加えるボタンをクリックしてください。

「Audio」を選択し、

「Audio Source」を選択してください。

これで「Audio Source」コンポーネントを設定することができました!

これで実行すれば効果音がなるはず!

おまけ

上の設定をやっても治らず、下のようなエラーが出る時。
NullReferenceException: Object reference not set to an instance of an object

このエラーが出る時はスクリプトに下のオーディオソースを取得するコードがあるかどうか確認してください。

void Start()
{
    audioSource = this.gameObject.GetComponent<AudioSource>();
}

これがない場合はこのコードを書き足して動作を確認してください。
うまく時があります。

この一文がなくて15分くらいハマってました。
このコードが当然あると思い込んでいたのがダメだったので、エラーが出た時は基本から疑ってみた方がいいかもですね。

コメント

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