版本
Wwise Unreal Integration Documentation
|
在之前的章节中,我们探讨了如何在开始游戏时和在动画的特定时间点播放音乐。不过,有些音频整合可能需要对游戏物理有更加深入的了解。在本例中,我们要在每次被实例化的对象与其他对象发生碰撞时播放声音。
之后,会在按下 F 键时将角色前方的对象实例化。
为此,可将该对象添加到 Character Blueprint。为了创建此 "Wwise Object" Class,可先创建一个新的 Blueprint Actor,然后添加带有 "1M_Cube" Mesh 的 Static Mesh 组件,并启用 Simulate Physics。
之后,可在按下 F 键时将角色前方的对象实例化。我们希望在被实例化的对象与任何其他对象发生碰撞时播放声音。为此,我们要使用 Unreal 的 "OnComponentHit" Event,并针对被实例化的对象加以启用。
打开 "Wwise Object" Blueprint Actor,然后选择 Static Mesh 并启用 Collision > Simulation Generates Hit Events。
在启用该选项后,便可创建 "OnComponentHit" Unreal Event。
右键单击 Static Mesh,然后依次选择 Add Event > Add OnComponentHit。
接下来便可将其连到 Post Event 函数和引用本身。
不过若现在按下 Play 按钮,很可能会被碰撞时发出的声音吵到,因为目前 Unreal 连轻微的碰撞都会调用。为此,我们要滤掉所有不重要的碰撞,而只在检测到强力的撞击时发送声音。该检测需在调用 PostEvent 之前执行。 为了衡量撞击的力度,我们可以参照启用游戏物理的对象的 Velocity,并获取相应振幅(不管撞击方位):若大于所设定的阈值,则允许传递相应调用。
通过 Hit Component 获取组件的 Velocity。若该值在 40 以上,则允许传递调用。
如此一来,便可清晰地看到某个对象与其他对象发生碰撞时的发声逻辑。不过,无论对象撞击力度很大还是勉强高于阈值,目前声音本身都不会产生任何变化。为此,我们来将 Velocity 作为 RTPC 传给 Wwise。这样可以通过应用音量变化或效果器来对声音加以调节。Wwise 中建议的设置如下:
为了设置 RTPC,下面我们直接使用相同的 Vector Length。不过要记住,必须针对发送 Wwise Event 的同一 Actor 设置 RTPC。
从 Branch 创建 SetRTPCValue 函数,并连到 Velocity 的 VectorLength。
如需详细了解如何基于 Velocity 播放带有阈值的声音,请参阅此视频。