太空射击游戏中的3D音效

时间:2012-09-24 09:07:12

标签: c++ soundpool stereo-3d

我正在尝试为我的太空射击游戏实现一个3D音响系统。我已准备好一切(每侧都有不同音量的播放声音等)但我无法找到相应的公式来计算每一方的正确音量。

一般的想法是,每当玩家(船)杀死一个敌人(cammera总是在船的顶部)时,将会听到正确的左右音量的explotion。因此,如果敌人在船上,那么右侧通道将会听到更多,与左侧情况相同。

所以我有

vector ship
vector enemie

playSound(left ? ,right ?)

游戏引擎如何计算左右声道?

1 个答案:

答案 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);
}