使用openAL禁用环绕声

时间:2011-06-06 16:15:23

标签: audio openal lwjgl

我是法国人,对我的英语很抱歉。

我目前正在使用LWJGL制作分屏2D游戏。 我正在使用LWJGL提供的openAL API。一切似乎都很完美。好吧,说实话太完美了:因为我正在制作一个分屏游戏,因为我不能让2个听众共享相同的上下文,我想摆脱左/右平移。

声音衰减效果很好。我根据最近的玩家改变声音的位置。 听众不会改变,总是在(0,0,0)。声音位置是(soundPosition - nearestPlayerPosition)。

那么如何摆脱环绕声呢?当然,我想保持距离的声音衰减。 我可以根据距离简单地将声音放在Z轴上,但这看起来有点傻(每次我必须更新声音位置时我必须计算距离)。

谢谢!

1 个答案:

答案 0 :(得分:1)

当您计算声音的位置(soundPosition - nearestPlayerPosition)时,取出由此返回的向量的长度,然后将该声音直接放在距离播放器一定距离的z轴上。

示例:

soundPosition =(1.4,0,1.4) nearestPlayerPosition =(0,0,0)

soundDirection = soundPosition - nearestPlayerPosition =(1.4,0,1.4)

soundDistance = soundDirection.Length()

最后,你声音的最终位置:

finalSoundPosition =(0,0,soundDistance)=(0,0,2)

编辑:我没注意到你已经提出过这个建议。说实话,我觉得这很好,除了重写openAL内部的内容之外,它是解决问题的唯一方法

相关问题