基于距离(x,y)设置适当“音频”音量的算法

时间:2010-11-04 17:26:00

标签: algorithm

我正在开发一款游戏。 如何根据当前渲染场景中精灵的“距离”“淡入”声音的音量? 假设我有一个世界:

WIDTH_WORLD = 10000
HEIGHT_WORLD = 10000

Current Scene  
xCurrent = 800   ( + Width Res. = 800 + 1024 = 1824)  
yCurrent = 400   ( + Height Res. = 400 + 768 =... )

Far Sprite
xSprite = 7000 
ySprite = 3000 

“计算”音量(可能是左/右声道声道比率)的好算法是什么? 提前谢谢!

3 个答案:

答案 0 :(得分:2)

使用距离(Dsquared = xdist ^ 2 + ydist ^ 2)作为缩放系数来缩小音量。反转此距离平方值以直接应用于您的音量(音量以距离的平方下降,并且距离很容易计算为平方值)。

左/右声道比率仅通过为左右声道定义两个不同的点(分别在渲染位置的左侧和右侧)完成,执行上述计算,并找到您的声道的比率办法。因为上面的计算只是两个平方的总和,所以计算简单。

答案 1 :(得分:2)

总费用

  • 有几种减小音量的方法。例如。你可以使用线性阻尼函数,如volume = max( 0, max_volume - max_volume/max_distance * distance ),或反距离下降的函数,如volume = min( max_volume, max_volume / distance )

平衡比率

  • 同样,有几种方法可以实现足够的功能。在您的情况下,您可以说,如果对象位于左侧屏幕边框或超出左侧屏幕边框,则向左平移,如果对象位于右侧屏幕边框或超出右侧屏幕边框,则向右平移,否则使用插值功能,例如, balance = (object_x-camera_x) / screen_half_width的值介于-1:left,+ 1:right和0:center。

在组合这些方法时,您必须考虑适合您情况的方法:例如,如果对象超出屏幕范围,则仅抑制音量,无论如何......

答案 2 :(得分:0)

嗯,声音的音量会随着距离声源的距离的平方而降低,因此这将为您提供一个良好的起点。

了解您正在使用的游戏库将会有所帮助 - 许多游戏库已经内置了这种功能。