开发者

Disable surround sound with openAL

I'm french so sorry for my english.

I'm currently making a splitscreen 2D game with LWJGL. I'm using the openAL API which is given with LWJGL. Everything seems to works perfectly. Well, too perfectly to be honest : because I'm making a开发者_JAVA技巧 splitscreen game and because I can't have 2 listener sharing the same context, I want to get rid of the left/right panning.

Sound attenuation work well. I change the position of sound depending on the closest player. The listener doesn't change, always at (0,0,0). The sound position is (soundPosition - closestPlayerPosition).

So how do I get rid of the surround thing ? I want to keep sound attenuation over distance, of course. I could simply put the sound on the Z-axis depending on the distance but this seem a bit silly (I have to compute the distance every time I have to update a sound position).

Thanks !


When you calculate the sound's position (soundPosition - closestPlayerPosition) take the length of the vector returned by that and then put that sound directly down the z axis that distance away from the player.

Example:

soundPosition = (1.4,0,1.4) closestPlayerPosition = (0,0,0)

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

soundDistance = soundDirection.Length()

And finally, the final position of your sound:

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

Edit: I didn't notice you already suggested this. To be honest I think this is fine, and its the only way to solve your problem beyond rewriting stuff internal to openAL

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜