我正在尝试为我的太空射击游戏实现 3d 声音系统。我已准备好一切(在每一侧播放不同音量的声音等)但我找不到正确的公式来计算每一侧的正确音量。
一般的想法是,每次玩家(飞船)杀死一个敌人(摄像机总是在飞船的顶部),都会听到正确的左右音量的爆炸声。所以如果敌人在船的右边,那么右边的 channel 会听到更多,左边的情况也是如此。
所以我有
vector ship
vector enemie
和
playSound(left ? ,right ?)
游戏引擎是如何计算左右声道的?
最佳答案
终于解决了。我使用了类似于 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);
}
关于c++ - 太空射击游戏中的 3D 音效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561887/