Unity:PlayClipAtPointで音量が小さく感じるとき(最大音量で鳴らしたい)

Unity

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引数に設定する必要があります。

コメント

タイトルとURLをコピーしました