CodeLab技術ブログ

プログラミング技術まとめ

[Unity]初めてのUnityを肉付けする その2 音を出して見よう

さて、第2回目は、音を出して見ようと思います。

仕様機材&前提条件
Unity5.5
C#
”はじめてのUnity”の各チュートリアルは理解していること。

素材の用意

さて、今回はアイテムを取得したときの音と、ゲームクリア時の音の二つを実装してみます。
まず、それっぽい音を用意します。作れればいいですが、アセットストアなりフリー素材から引っ張ってきましょう。

フリー素材でしたら下記をお勧めします。
FREE BGM DOVA-SYNDROME
※配布する場合はライセンスに注意しましょう。

アセットストアの場合、インポートすれば勝手にプロジェクトに入ってきますが、MP3なりWaveファイルなりの場合は、プロジェクトにドラッグアンドドロップすればOKです。わかりやすいように”Sound”というようなフォルダを作って入れておくとよいでしょう。

Unityプロジェクトウィンドウ

準備

さて、Unityで音を鳴らす場合は2つの要素を考慮する必要があります。
AudioSorceとAudioListenerです。
Unity3Dの場合、音源とリスナーの距離や方向によって音の聞こえ方が違います。
ですので、それらは”実際に音を出したり聞いたりする”オブジェクトに対して設定しなければなりません。
ですので、例えば、犬が吠えているのであれば、その犬のオブジェクトに対して音源を設定します。

リスナーについては、通常はプレイヤーオブジェクトかカメラに対して設定しておけばよいかと思います。
(デフォルトではカメラに設定されています。ヒエラルキーからMainCameraを選んでインスペクターで”Audio Listener”コンポーネントがあることを確認しましょう)

今回、音源については、プレイヤーとアイテムが衝突したらということなので、衝突音はプレイヤーに設定しておきます。
バックグラウンドBGMなどの環境音は、どこにいても同じように聞こえなければいけませんので、これもプレイヤーに設定することにします。

音源の設定

では音源を設定しましょう。
ヒエラルキーからプレイヤーを設定して、インスペクターのAdd ComponentからAudio->Audio Sourceを選択しましょう。

追加されたAudioSourceコンポーネントのAucio Clipにプロジェクトに追加しておいた音声ファイルをドラッグアンドドロップします。
これで完了ですが、”Play On Awake”のチェックが入っていると、オブジェクト生成と同時に再生してしまうのでチェックを外しておいた方がいいでしょう。

Unity Audio Source

これを、音源の数だけ行います。

音を鳴らす

さて、実際に音を鳴らしてみます。

public class PlayerController : MonoBehaviour {

    public AudioClip colAudio;
    private AudioSource audioSource;
---中略---
    void Start () {
	audioSource = gameObject.GetComponent ();
    }
    private void OnTriggerEnter(Collider other)
    {
        //ITEM処理
        if (other.CompareTag("item"))
        {
            audioSource.PlayOneShot(colAudio);
---中略---
        }
    }

Start()メソッドで、AudioSorce(音を鳴らすためのコンポーネント)を生成しておきます。
OnTriggerEnter()が衝突時の処理なので、ここでaudioSource.PlayOneShot(colAudio); として1回だけ音を鳴らします。
で、public AudioClip colAudio; というのはなに??となりますが、これはUnityエディタで戻ってプレイヤーのインスペクターで、PlayerControllerの項目を見ると、colAudio というパラメータが増えていると思いますので、ここに、先ほど設定したAudioSourceと同じものを設定すればOKです。

これで、プレイヤーとアイテム衝突時に音が鳴るはずです!

終了時のBGMについても同じように設定すればOKです。

コメントは受け付けていません。