我在 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);