FMODでイベントシステムをセットアップし、リスナーが近くにいるときに3Dサウンドがトリガーされるようにしました。リスナーの角度を変更して、サウンドランドスケープ全体がリスナーの回転と同じ角度だけシフトするようにしたいと考えています。いいね?
出来ますか?そのためのiPhoneコードは何でしょうか?set3DListenerAttributesメソッドに何かを渡しますか?
完全に理解できているかわかりませんが、リスナーを3D空間で回転させたいだけですか?その場合、新しい方向を指すようにリスナーの前方ベクトルを調整します。
**あなたの回答に基づく**
FMODはデカルト座標系で動作し、オブジェクト(またはリスナー)が向いている方向を指す単位長ベクトルを持っています。角度(度またはラジアン)をベクトルに変換する方法を完全に理解するために、三角法を読んでおくことをお勧めします。
フォワードベクトルの場合、方程式は次のようになります(私が正しく覚えている場合):x = cos(angle)z = sin(angle)y = 0;
これは、角度がラジアンであり、度からラジアンに変換されることを前提としています。ラジアン=度*(180 / Pi)ここで、Piは約3.14159265です。
これは私が最後に使用したコードでした:
float degree = 90;
float radians = (degree) * (M_PI/180);
float fx = cos(radians);
float fz = sin(radians);
forward.x = fx;
forward.z = fz;
listenerpos.x = lxPos * DISTANCEFACTOR;
listenerpos.z = lyPos * DISTANCEFACTOR;
result = eventSystem->set3DListenerAttributes(0, &listenerpos,&vel,&forward,NULL);