Unityでの音源再生命令PlayClipAtPointは、1行で音源の再生と削除までやってくれる便利な命令ですが、音量を最大で鳴らしたい場合は、思うようにいかないことがあります。
PlayClipAtPointで最大音量で鳴らしたい場合の対処法です。
例として
AudioSource.PlayClipAtPoint(se, transform.position);
などとするとアタッチしたオブジェクトの位置(transform.position)によっては音が小さくなったり大きくなったりして聞こえます。(もちろん PlayClipAtPoint は、そういった効果を狙った命令ではありますが…)
PlayClipAtPoint は、第2引数に音源を再生する位置をVector3型で指定するようになっています。
AudioSource-PlayClipAtPoint - Unity スクリプトリファレンス
ワールド空間内の指定された位置で AudioClip を再生します。
これを逆手にとって、音量を最大で鳴らしたいときは、Main Cameraの場所(Transform > PositionのXYZ座標)を第2引数に指定するといいです。
例)Main CameraのTransform PositionのXYZ座標が0, 0, -10の場合
AudioSource.PlayClipAtPoint(se, new Vector3(0, 0, -10));
実際の違い
第2引数に transform.positionを指定した場合
第2引数にMain Cameraの位置を指定した場合
考え方
Unityデフォルトでは、Main CameraにAudio ListenerというUnityでいうところの「耳」があるからです。
耳元で鳴らせば音が最大で聞こえる、という考え方です。
イメージ
ただし、Main Cameraの位置が常に移動するようなゲームの場合は、Main Cameraの位置を常に取得して第2引数に設定する必要があります。
コメント