表面滚动特效与音频
滚动特效与音频
轮胎驶过砾石时发出砾石的声音,驶过泥浆时甩出泥浆,驶过积雪时发出自己的嘶嘶声。插件根据每个车轮下方的路面,播放该车轮的滚动声音,并显示其滚动特效。声音和特效会随速度增强,刹车时特效甩得更猛。本页介绍它们如何跟随地面、如何调校,以及如何添加自己的路面。
| Rolling Sound | ||
|---|---|---|
| Rolling Sound | ||
| Attenuation | SA_CF_TireRolling | |
| Sound Class | None | |
| Priority | 0.1 | |
| Speed Parameter Name | Speed | |
| Tuning | ||
| Cabin Volume Scale | ||
| Cabin Low Pass Frequency | 3000.0 Hz | |
| Rolling FX | ||
| Rolling FX | ||
| FX Intensity Parameter | Intensity | |
| FX Tuning | ||
每个车轮都有自己的滚动声音和滚动特效。两者都跟随车轮下方的路面,并随车轮加速而逐渐出现。声音就是该路面的滚动循环音,特效则是该路面的 Niagara 系统。两者都只是呈现效果:它们在渲染这辆车的每个端上播放,专用服务器则两者都不播放。
- 两个组件。
UCFRollingAudioComponent播放滚动声音,UCFRollingFXComponent显示滚动特效。车辆适配器在 Rolling Sound 和 Rolling FX 标志下创建它们。两者各自从车辆的宿主读取车轮,并逐个车轮工作。 - 每个车轮的声音。 每个车轮都有一个声音通道,它跟随车轮下方路面的滚动声音。当新路面在车轮下保持了 Surface Hold Time 后,声音会交叉淡化到新路面的声音。音量从 Min Audible Speed KPH 线性淡入至 Full Volume Speed KPH;音高在 Full Pitch Speed KPH 处从 Pitch at Min Speed 升至 Pitch at Full Speed。一个很小的随机音高偏移,使相同的车轮不会同相位播放。
- 听觉范围。 除非听者处于衰减范围之内,否则车轮是无声的,因此远处的车辆保持安静。
- 每个车轮的特效。 特效是一个 Niagara 系统,每个车轮一个,取自该路面所在的行。它的强度为车轮或车辆速度除以 Full Intensity Speed KPH(最高为 1),刹车时再乘以 Brake Boost。用
SetBraking设置的刹车会把强度提升到 1 以上,最高为该倍数。 - 休眠。 当车身以及最快的着地车轮都慢于 Sleep Speed KPH 时,车辆的所有特效都会停止。陷在泥里的车会保留特效,因为它空转的车轮很快。
- 车厢。 适配器上的
SetCabinMuffled会为车厢内的听者降低滚动声音:音量乘以 Cabin Volume Scale,并且低通滤波器会截断高于 Cabin Low Pass Frequency 的声音。同一调用还会为有发动机声音的适配器压低发动机声音,这部分见发动机声音页。没有任何代码会替你调用它,因此游戏需要告诉适配器听者何时在车厢内。 - 设置。 所有车辆的默认值位于 Project Settings > Plugins > Crushform Wheels 中。车辆可以在其适配器上,或在组件本身上,覆盖声音调校和特效调校。
- 在 Project Settings > Plugins > Crushform Wheels 中,检查 Attenuation。默认为
SA_CF_TireRolling。如果你有自己的 Sound Class,请进行设置;没有则留空,使用默认类。 - 在路面表中,为每一行设置 Rolling Sound 和 Rolling FX。声音必须是循环资产(参见故障排除)。路面表的说明见车轮与路面。
- 在车辆适配器上勾选 Rolling Sound 和 Rolling FX。两者默认都是开启的。
- 要制作自己的特效,请创建一个 Niagara 系统,并带有一个名为
Intensity的浮点用户参数,这是项目的默认参数名。把它设为某一行的 Rolling FX。如果参数使用其他名称,请在该行中把 Rolling FX Intensity Parameter 设为该名称。 - 要调校单辆车,请在其适配器上勾选 Override Rolling Sound Tuning 或 Override Rolling FX Tuning,并在那里设置数值。
在蓝图中,通过适配器的 Set Braking 施加刹车,取值从 0 到 1。当听者进入或离开车辆时,用 Set Cabin Muffled 为车厢隔音。下方的蓝图在自定义事件 SetCabinState 触发时运行,为车厢隔音,然后把刹车设为最大。
在 C++ 中,对适配器调用同样的两个函数。这些调用需要 CrushformVehicle 模块(CFVehicleAdapterComponent.h),请把它加入模块 Build.cs 的 PublicDependencyModuleNames。
Adapter->SetBraking(0.8f);Adapter->SetCabinMuffled(bInCabin);SetCabinMuffled 对车轮使用 Crushform Wheels 中的车厢数值,对发动机使用 Crushform Engine 中的车厢数值。在适配器上勾选 Override Cabin Muffling,则两者都改用它自己的 Cabin Volume Scale 和 Cabin Low Pass Frequency。
| 属性 | 作用 | 默认值 |
|---|---|---|
UCFWheelSettings::bRollingSound | 滚动声音的总开关。关闭后,任何车轮都不会播放。 | true |
UCFWheelSettings::Attenuation | 所有滚动声音的衰减。留空则声音保持关闭。 | /Crushform/Sounds/SA_CF_TireRolling |
UCFWheelSettings::SpeedParameterName | 声音中接收速度(km/h)的浮点参数。None 表示不发送速度。 | Speed |
FCFRollingAudioTuning::FullVolumeSpeedKPH | 车轮速度达到满音量时的速度,单位 km/h。 | 50 |
FCFRollingAudioTuning::SurfaceHoldTime | 新路面必须在车轮下保持的秒数,之后声音才会交叉淡化到它。 | 0.15 |
UCFWheelSettings::CabinVolumeScale | 从车厢中听到的声音的音量倍数。 | 0.8 |
UCFWheelSettings::CabinLowPassFrequency | 从车厢中听到的声音的低通截止频率,单位 Hz。 | 3000 |
UCFWheelSettings::bRollingFX | 滚动特效的总开关。关闭后,任何车轮都不会显示特效。 | true |
UCFWheelSettings::FXIntensityParameter | 为未指定参数名的行接收车轮强度的浮点参数。 | Intensity |
FCFRollingFXTuning::FullIntensitySpeedKPH | 特效达到满强度时的速度,单位 km/h。 | 40 |
FCFRollingFXTuning::BrakeBoost | 刹车时的强度倍数。 | 2 |
FCFRollingFXTuning::SleepSpeedKPH | 车辆所有特效停止的速度,单位 km/h。0 表示永不休眠。 | 1 |
验证是否生效
Section titled “验证是否生效”运行 Lvl_ProvingGround,把轿车从 ASPHALT 路段开上 DIRT、MUD 和 SNOW 路段。滚动声音会随每种路面改变,每个车轮都显示其下方路面的特效。在泥土上用力刹车,刹车期间特效甩得更猛。运行 stat CrushformWheel 可以显示车轮组件的统计数据。
完全没有滚动声音
Section titled “完全没有滚动声音”原因。 有三种情况会让声音无声。适配器或 Crushform Wheels 中的 Rolling Sound 关闭。Attenuation 为空,插件会在组件开始播放时记录下面这行日志:
%s: no Attenuation in Project Settings > Plugins > Crushform Wheels; the rolling sound stays off专用服务器上的声音同样无声。
修复。 在适配器上勾选 Rolling Sound,在 Crushform Wheels 中设置 Attenuation,并在客户端或监听服务器上测试。
摄像机离得远时听不到声音
Section titled “摄像机离得远时听不到声音”原因。 只有当听者处于衰减的最大距离之内时,车轮才会播放声音。这是有意为之,因此远处的车辆不占用任何资源。
修复。 让听者靠近一些;如果希望声音传得更远,就加大衰减的范围。
滚动声音突然断开
Section titled “滚动声音突然断开”原因。 声音资产没有设为循环。插件会在某个车轮第一次播放该资产时,为每个资产记录一次日志:
%s: rolling sound '%s' is not looping - it will cut out between restarts. Set bLooping on the asset.修复。 在声音资产上设置 Looping。
某种路面有声音却没有特效
Section titled “某种路面有声音却没有特效”原因。 该行的 Rolling FX 为空,或者它不是 Niagara 系统。位于这种行上的车轮会停止其特效。
修复。 把该行的 Rolling FX 设为一个 Niagara 系统,例如 NS_CF_Rolling_Mud。
车辆缓慢爬行时特效停止
Section titled “车辆缓慢爬行时特效停止”原因。 当车身以及最快的着地车轮都慢于 Sleep Speed KPH(默认为 1 km/h)时,特效进入休眠。
修复。 在调校中降低 Sleep Speed KPH,或将其设为 0,使特效永不休眠。
