我是法国人,对我的英语很抱歉。
我目前正在使用LWJGL制作分屏2D游戏。 我正在使用LWJGL提供的openAL API。一切似乎都很完美。好吧,说实话太完美了:因为我正在制作一个分屏游戏,因为我不能让2个听众共享相同的上下文,我想摆脱左/右平移。
声音衰减效果很好。我根据最近的玩家改变声音的位置。 听众不会改变,总是在(0,0,0)。声音位置是(soundPosition - nearestPlayerPosition)。
那么如何摆脱环绕声呢?当然,我想保持距离的声音衰减。 我可以根据距离简单地将声音放在Z轴上,但这看起来有点傻(每次我必须更新声音位置时我必须计算距离)。
谢谢!
答案 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内部的内容之外,它是解决问题的唯一方法