我正在尝试为我的太空射击游戏实现一个3D音响系统。我已准备好一切(每侧都有不同音量的播放声音等)但我无法找到相应的公式来计算每一方的正确音量。
一般的想法是,每当玩家(船)杀死一个敌人(cammera总是在船的顶部)时,将会听到正确的左右音量的explotion。因此,如果敌人在船上,那么右侧通道将会听到更多,与左侧情况相同。
所以我有
vector ship
vector enemie
和
playSound(left ? ,right ?)
游戏引擎如何计算左右声道?
答案 0 :(得分:1)
最后我解决了。我使用了类似于Ameoo所说的东西。
这是:
void Play3D(int id,vector3d ship,vector3d pos,float arenaWidth,float power)
{
float disright=calculate_distance(ship.x+0.2f,ship.y,pos.x,pos.y);
float disleft=calculate_distance(ship.x-0.2f,ship.y,pos.x,pos.y);
sf.Play(2,1-disleft/arenaWidth*power,1-disright/arenaWidth*power);
}