2

我正在尝试为我的太空射击游戏实现 3d 音响系统。我已经准备好了一切(在每一侧播放不同音量的声音等),但我找不到正确的公式来计算每一侧的正确音量。

总体思路是,每次玩家(舰船)击杀敌人(摄像机始终在舰船顶部)时,都会听到左右音量正确的爆炸声。所以如果敌人在船的右边,那么右边的频道会被听到更多,左边的情况也是如此。

所以我有

vector ship
vector enemie

playSound(left ? ,right ?)

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

4

1 回答 1

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);
}
于 2012-09-24T21:47:37.390 回答