例えばシーン開始時にBGMを自動再生させておき、ゲームオーバーなどの条件によってAudio Sourceコンポーネントを再生/停止させたい。
例として鳥が地面についたらBGMが停止するシーンを考える。
イメージ
シーンの準備
今回のプロジェクトは2Dで作成した。(3Dでも基本的には考え方は変わらない)
シーンにキャラクタとしてBIRD、ぶつかったときの地面としてGROUNDを配置した。(BACKGROUNDは背景だがとくに当たり判定するわけでもないので適当)
BGM再生用に空のオブジェクトを作成し、名称をBGMとしている。
BGMには、Audio Sourceコンポーネントを追加し、適当な音源を設定した。(実行開始時に再生されるようにPlay On Awakeはチェックしておく)
当たり判定用の設定
BIRDがGROUNDとぶつかったときBGM再生を停止させたい。
BIRD のInspectorウインドウ
GROUNDとの当たり判定用に、Rigidbody 2DとCapsule 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()とすればよい。
コメント