[GameMaker: Studio] 3Dオーディオの座標

gms_3daudio_1

New Audio Engineは3D再生に対応しています。
プレイヤーのいる位置や、音の発生源の位置をXYZの三次元座標で指定するだけで、各スピーカーの音量コントロールを行ってくれます。

3D再生を行うaudio_play_sound_atの説明を読むと、「座標についてはaudio_listener_positionを参照してね」と書かれています。
この説明では上の画像のようにリスナー(プレイヤー)の位置と音源の位置の関係が書かれています。

これを見て「あぁ、左から何かが接近してくるならx座標のマイナス方向に音を配置すればいいんだな」と思うかもしれません。
しかし実際に鳴らしてみると何故か右から聞こえてきます。

その原因はプレイヤーの“向き”にあります。

3Dということでプレイヤーの座標だけではなく、向いている方向も色々な方向に回転させることができますが、“向き”の初期値が下の画像のようにy座標のプラス方向が上(z軸が180度回転)に設定されているのです。

gms_3daudio_2

なので、左方向で音を鳴らしたい場合は、この初期値に従ってxプラス方向から鳴らすか、もしくは初期化時にaudio_listener_orientationup_yを-1に設定しましょう。