根据距离 (x,y) 设置适当的 "audio"音量的算法

标签 algorithm

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

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 

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

最佳答案

总卷数

  • 有几种降低音量的方法。例如。您可以使用线性阻尼函数,例如 volume = max( 0, max_volume - max_volume/max_distance * distance ),或者使用反距离衰减函数,例如 volume = min( max_volume,最大体积/距离)

余额比率

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

当组合这些方法时,您必须考虑适合您的情况的方法:例如,仅在对象超出屏幕边界时才衰减音量,无论如何...

关于根据距离 (x,y) 设置适当的 "audio"音量的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099393/

相关文章:

algorithm - 序列的数据结构

algorithm - 如何排列N个矩形以覆盖最小面积

c# - 编辑 EF 实体列表的有效方法

algorithm - 简化大 O 符号

java - 字符串算法的一个子串的Big-O分析。 O(n*logn) 简化了吗?

c++ - 图中的角点和边缘检测

algorithm - 我有一个集合,其中包含每个集合元素的值,并且我希望按值将元素尽可能均匀地分布在 N block 上

c++ - 我怎样才能优化它以有效的方式运行?

java - 避免在 Java 8 stream reduce 方法中使用全局变量

algorithm - 大 O 分析 - 具有 3 种不同时间复杂度的 for-if-do something 语句