Godot中的分贝和音量换算
Godot中不管是音频播放器还是音频总线都是用分贝来表示音量大小的,如图
我们希望能用0-1来表示音量大小,如何转换呢?
我们用v表示音量大小(0-1),以下是转换公式
V转换成volume_db的公式:
volume_db=10*log(v)/log(10)
但是log的参数必须是大于0的,我们要做一下特殊判断,最终公式为:
If v<=0:
volume_db=-60
else:
volume_db=10*log(v)/log(10)
Volume_db只要不大于-60,系统就不会发出声音了。这个在设置里可以设定不发出声音的临界值,默认是-60,所以这里就让volume_db=-60。
一般我们会用全局变量来保存v的值,不需要用volume_db转v的公式,不过还是说一下
volume_db转换成v,公式是:
v=pow(10,(float(volume_db)/10))
注意里面的float(),这里我额外说一下Godot里计算的坑。
举例:
var a=1
print(a/10)
输出结果为0,因为a是整数,计算结果默认取整了。
如果加上float先把a变成浮点数:
Var a=1
print(float(a)/10)
输出结果就是0.1。
(转发自:原日志地址)