Unity 音を鳴らす、音を止める

++ステージ全体にかかるBGMを流す

ヒエラルキーに空のオブジェクトを作成=>

空のオブジェクトに流したい音楽ファイルをドラッグ&ドロップ=>

AudioSorceコンポーネントの”ゲーム開始時に再生 ループ”にチェックを入れる。

 (別にオブジェクトであれば何でもいいが、私は役割訳のために空のオブジェクトに関連づけている)

(AudioSorceとかはオブジェクトでないのでこれを作成して関連づけてもダメ)

 

++ステージ全体にかかるBGMを止める

+そのBGMが関連づけられたオブジェクトのスクリプトから止める場合

gameObject.GetComponent().Stop();

+他のオブジェクトから止める場合

(BGMを関連付けたオブジェクト名(ヒエラルキーに表示されてる名前)が WholeBGMの場合)

GameObject.Find("WholeBGM").GetComponent().Stop();

 

+特定の座標から音を鳴らす場合
Playerタグを持つオブジェクトと衝突したら、その衝突した座標から音を鳴らす (publicのメンバ変数を持つと、インスペクタビューからその変数の内容を設定できるので、soundに鳴らしたい音のファイルを入れておく)

public AudioClip sound;
void OnTriggerEnter(Collider hit){
if (hit.CompareTag("Player")){
	AudioSource.PlayClipAtPoint(sound, transform.position);
}

 

++補足

よくわかってないが、音を鳴らすには音を鳴らす側と聞く側の両方のオブジェクトが必要らしく、聞く側のオブジェクトはMainCameraにデフォルトで付いている