音関係の制御

音関係の制御


unityではAudioListnerコンポーネントが耳、AudioSourceコンポーネントが音源となる
AudioListnerは大抵メインカメラのコンポーネントとして設定されている

音を鳴らすにはゲームオブジェクトにAudioSourceコンポーネントを追加してaudio.Play();で再生できる
新規作成したプロジェクトのカメラには大抵AudioListnerが付加されているのでカメラの近くにあれば音は聴こえる

距離減衰のパラメーターはコンポーネントのインスペクタで調整できるのでこだわるならば、その辺りも調整する事

サンプル1

一定間隔で音を繰り返すスクリプト
オントリガー時にオブジェクトをデストロイしますが、ブツ切りに音関係のコンポーネントを消すとプチノイズが発生する場合があるので
コルーチンで音量を一定時間でフェイドアウトさせてからデストロイします

using UnityEngine;
using System.Collections;

public class Note : MonoBehaviour
{
  
   public float interval = 2.0f;
   public float fadeOutTime = 0.5f;
   float counter = 0.0f;
   
   void FixedUpdate ()
   {
       Clock (Time.deltaTime);
   }
   
   void Clock (float t)
   {
       counter += t;
       if (counter > interval) {
           audio.Play ();
           counter = 0.0f;
       }
   }
   
   void OnTriggerEnter (Collider c)
   {
       if (c.tag == "Player") {
           StartCoroutine ("FadeOut", fadeOutTime);
       }
   }
   
   //プチノイズを防ぐ為 音量をコルーチンでフェードアウトさせる 
   IEnumerator FadeOut (float duration)
   {
       float time = 0.0f;
       float wait = 0.2f;
       float firstVolume = audio.volume;    //コンポーネントのボリューム音量を拾う
       
       while (duration > time) {
           audio.volume = Mathf.Lerp (firstVolume, 0, time / duration);    //firstVolume~0へ線形に変化していく
           yield return new WaitForSeconds(wait);
           time += wait;
       }
       DestroyObject (gameObject);
   }
   
}

メニュー



  • 最終更新:2014-06-13 10:37:24

このWIKIを編集するにはパスワード入力が必要です

認証パスワード