シヴァのブログ

UnityやUE4や趣味とかいろいろ...

開発メモ 「サウンド制御(Audio)」

効果音やBGMのサウンドは、

ゲームの雰囲気づくりに大切なのでメモ。

まず、Audioの役割(2つ)を覚える。

  • AudioSource  (サウンドを鳴らす)
  • Audio Listener(サウンドを聴く)

次に、使用方法(3つ)を覚える。

  1. 環境音(プレイヤーがソース源に近づくと聞こえる)
  2. 効果音(スクリプト(Script)を用いて制御)
  3. 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プロパティのセットアップについては、スクリプト側で行うから

以下のように、設定しなくてもいい。

f:id:shivaT:20130617163419p:plain

 

ここで注意として、

たとえサウンドの演奏が完全にスクリプト駆動であっても、サウンドを鳴らしたいゲームオブジェクトには、かならず、オーディオソースのコンポーネントを持たす。(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のサウンドを入手する。

サウンドを作ったりすることができないので、

いつもフリーの素材を利用させてもらっています。

(利用規約は必ず確認してください。)

 

うん。

そんなこんなで 完。