Unity:オーディオコンポ―ネントを条件により再生/停止させる

Unity

例えばシーン開始時にBGMを自動再生させておき、ゲームオーバーなどの条件によってAudio Sourceコンポーネントを再生/停止させたい

結論

BGMが設定されたオブジェクトの ~.GetComponent<AudioSource> を取得し、~.Play()または~.Stop()メソッドを実行する。

例として鳥が地面についたらBGMが停止するシーンを考える。

イメージ

シーンの準備

今回のプロジェクトは2Dで作成した。(3Dでも基本的には考え方は変わらない)

シーンにキャラクタとしてBIRD、ぶつかったときの地面としてGROUNDを配置した。(BACKGROUNDは背景だがとくに当たり判定するわけでもないので適当)

BGM再生用に空のオブジェクトを作成し、名称をBGMとしている。
BGMには、Audio Sourceコンポーネントを追加し、適当な音源を設定した。(実行開始時に再生されるようにPlay On Awakeはチェックしておく)

当たり判定用の設定

BIRDGROUNDとぶつかったときBGM再生を停止させたい。

BIRD のInspectorウインドウ

GROUNDとの当たり判定用に、Rigidbody 2DCapsule Collider 2Dコンポーネントを追加。

GROUND のInspectorウインドウ

当たり判定用にBox Collider 2Dを追加。

BGMを再生/停止するためのスクリプト

C#スクリプトBirdScriptを作成し、BIRDにアタッチする。

BirdScript

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

public class BirdScript : MonoBehaviour
{
    public GameObject bgmObject;
    private AudioSource bgm;

    // Start is called before the first frame update
    void Start()
    {
        bgm = bgmObject.GetComponent<AudioSource>();
    }

    // Update is called once per frame
    void Update()
    {
        
    }

	private void OnCollisionEnter2D(Collision2D collision)
	{
		bgm.Stop();
	}
}

スクリプトアタッチ後、BIRDのInspectorウインドウに表示されるBgm Objectにシーン上のBGMをセットする。

これで、ぶつかったときに再生停止する対象のBGMを設定したことになる。

実行確認

きちんと地面にぶつかったときBGMが停止すればOK。

今回は、BGMを停止するために~.Stop()としているが、再生させたいなら~.Play()とすればよい。

コメント

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