開発メモ 「サウンド制御(Audio)」
効果音やBGMのサウンドは、
ゲームの雰囲気づくりに大切なのでメモ。
まず、Audioの役割(2つ)を覚える。
- AudioSource (サウンドを鳴らす)
- Audio Listener(サウンドを聴く)
次に、使用方法(3つ)を覚える。
- 環境音(プレイヤーがソース源に近づくと聞こえる)
- 効果音(スクリプト(Script)を用いて制御)
- BGM (プレイヤーがどこにいようとも聞こえる)
①は、
空のゲームオブジェクトを作って、その中に、Component > Audio > Audio Source って、操作してコンポーネントを追加する。音追加。Loopにチェック入れる。あとは、このオブジェクトを適度な場所に配置する。
これで、Audio Listenerを追加しているモノが、配置したところに近づくと、音が大きくなり、遠ざかると小さくなっていく。
②は、
簡単な例で表す(敵がプレイヤーに衝突した際に音を鳴らす)。
***************************************************************************
#pragma strict
var deathSound : AudioClip;//効果音
function OnCollisionEnter(other : Collision){
if(other.gameObject.tag == "Enemy"){
audio.clip = deathSound;
audio.Play();
}
}
***************************************************************************
あと、Sourceプロパティのセットアップについては、スクリプト側で行うから
以下のように、設定しなくてもいい。
ここで注意として、
たとえサウンドの演奏が完全にスクリプト駆動であっても、サウンドを鳴らしたいゲームオブジェクトには、かならず、オーディオソースのコンポーネントを持たす。(Component > Audio > Audio Source)
というか、持たさないと以下のようなエラーがでる。
MissingComponentException: There is no 'AudioSource' attached to the "オブジェクト名" game object, but a script is trying to access it.
You probably need to add a AudioSource to the game object "オブジェクト名". Or your script needs to check if the component is attached before using it.
他には、3DSoundに設定していて、prefabから音を鳴らそうとすると、以下のようなエラーがでる。
Can not play a disabled audio source
UnityEngine.AudioSource:Play()
3DSoundのチェックボックスにチェックを入れなかったら、エラーが消える。
③は、
空のゲームオブジェクトを作って、その中に、Component > Audio > Audio Source って、操作してコンポーネントを追加する。音追加。Loopにチェックを入れる。3DSoundにチェックを入れない。あとは、このオブジェクトをシーンのMain Cameraの子オブジェクトにする。そして、このオブジェクトの座標を(0,0,0)に設定する。
最後に、効果音やBGMのサウンドを入手する。
- 音楽素材/魔王魂・・・ http://maoudamashii.jokersounds.com/
- ポケットサウンド・・・ http://pocket-se.info/
サウンドを作ったりすることができないので、
いつもフリーの素材を利用させてもらっています。
(利用規約は必ず確認してください。)
うん。
そんなこんなで 完。