紧接UE4环境音效与程序化音效(1),进行第二部分的学习记录。
往期音效笔记
1.UE4环境音效与程序化音效(1)
2.UE4环境音效与程序化音效(2)
2.UE4动态音频
3.UE4音效与空间
程序化设计音效
1.简单模拟音效遮挡效果
在官方给的案例中,只是的用蓝图实现了音频的遮挡效果,但这个效果并不好,关于更具体的实现可以查看UE4音效与空间这篇博文,里面有更加详细的描述故这里不做深究。
这里我们需要实现的是:
在洞口外有瀑布的声音,树上有鸟叫声。进入洞口后就会听不见。这里我们可以在洞口处添加一个Trigger
盒体碰撞
随后打开关卡蓝图,添加以下蓝图功能。
实现的功能变为,检测当Trigger
碰撞到的角色位玩家时,利用FlipFlop
节点,切换洞口内和洞口外的声音。FadeOut
和FadeIn
节点可以实现音频的淡入和淡出。
2.程序化设计音效序列方式
利用随机排序、随机时序和音效合成来丰富音效的变化。
上图便是利用Concatenator
节点实现音效的复用,该节点的说明可以查阅UE4环境音效与程序化音效(1)。1,2都是同种音效,1音效播放了后,2音效Delay后再接着播放,并利用Modulator
节点调节音高和音量。
其次你还可以利用loop
节点播放同种音效不同次数,来实现音效的多样性。
上图就是利用一种音效分别循环3,4,7次再Random
随机选择播放音效。
3.设计音效调制方法
我们可以通过Modulator
和Enveloper
节点来调节音效的音高音量。该节点的说明可以查阅UE4环境音效与程序化音效(1)。这里用Enveloper
节点调节的实例进行说明:
这种方式对比用Modulator
调节的区别就是,该方法可以通过曲线来指定特别的调节方式,该方法更为精确。适合当音效比较少的时候需要实现多种效果。
4.音效的复用
创建一个Actor
,在Actor
中添加一个Box
盒体碰撞检测,在判断人物是否踏进播放音效的区域。
随后添加Box
的碰撞事件
判断踏入的角色是不是玩家,利用Random Bool With Weight
(随机布尔权重)来播放你想要播放的音效。同时你可以将权重值weight
和sound
暴露在蓝图外,方便你随时调整不同的值。
除此之外你也可以在蓝图中添加音频组件Audio
,在组件中设定你想复用的音效。
同时你可以设切换同碰撞盒子(Sphere、Box、Capsule
)来适应不同环境下需要不同的碰撞盒体。
首先在蓝图中,添加三种碰撞盒体
随后你需要将三种盒体的碰撞事件都关掉。
然后在事件构造蓝图中添加以下蓝图。
添加一个枚举变量,来选择当前的碰撞类型。同时可以设置盒体碰撞的半径。最后不要忘记将该碰撞的碰撞事件还原。
这里需要注意一点,因为你不知道需要运用的是哪种碰撞。所以生成碰撞事件需要改成Event ActorBegin Overlap
5.以玩家为中心生成音效
让环境音效Actor
播放单段音效可以为关卡注入活力。但是声音只会在Actor
的位置播放。这里将介绍如何在玩家周围的随机位置上生成音效。
想要实现该效果你就得获取玩家的位置或者获得想生成音效的位置,随后获取该位置向前,向右,向上的向量随机加上某值再与该位置的世界坐标相加。于是我们可以得到以下蓝图。
其中Min
和Max
值我们可以暴露在蓝图以外,方便调整。
随后我们将计算后的向量接入Spawn Sound At Location
节点,便可以实现该功能。