下面我们来添加音量衰减——音源离玩家越远,音量就越小。例如,当使用火箭筒发射火箭时,爆炸位置越远,声音越小。
音量衰减
以子弹为例,我们可以每次循环都根据子弹到玩家的距离设置音量,可以编写如下的自制积木:
- 计算到玩家的距离。距离 < 200,音量为 100;
- 距离为 200 ~ 1500,音量从 100 线性衰减到 0;
(公式理解方法:距离属于 200 ~ 1500,1-(距离-200)/(1500-200)属于 1~0,再乘以 100 就是 100~0。因此,200~1500 的距离对应 100~0 的音量)
线性衰减可能效果不够好,还可以尝试其他的衰减方式,比如平方反比衰减:音量v = c /(距离d^2)
(代码中的式子:音量 = (200 + C)² * 100 / (距离 + C)²,其中 C 取 800。如果觉得音量衰减太快,可以加大 C,反之亦然)
左右平衡
还可以根据子弹相对玩家的 x 坐标,设置左右平衡。 注:左右平衡为 -100 ~ 100,-100 时为完全左声道,100 为完全右声道。
例如,当火箭在玩家左侧爆炸,假设相对 x 为 -100,计算出左右平衡为 -40(偏左声道)。
添加到其他角色
同样的代码可以添加给人物、人物武器:
(注意,计算的结果变量名称取决于计算距离的自制积木的变量名称。前面教程中,变量名称没有统一,有的角色用“out1结果”,有的角色用“out1距离”)
这样,播放声音就有远近、左右方位的区分。当有敌人开火时,可以大致根据声音的大小,方向判断敌人开火位置。
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG202/Arkos/Lec9/01&type=comment"
title="{射击中级-9-01-音效衰减}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>