跳转到内容
CRUSHFORMV1.1.0
在 Fab 上获取

表面滚动特效与音频

滚动特效与音频

轮胎驶过砾石时发出砾石的声音,驶过泥浆时甩出泥浆,驶过积雪时发出自己的嘶嘶声。插件根据每个车轮下方的路面,播放该车轮的滚动声音,并显示其滚动特效。声音和特效会随速度增强,刹车时特效甩得更猛。本页介绍它们如何跟随地面、如何调校,以及如何添加自己的路面。

Rolling Sound
Rolling Sound
AttenuationSA_CF_TireRolling
Sound ClassNone
Priority0.1
Speed Parameter NameSpeed
Tuning
Cabin Volume Scale0.8
Cabin Low Pass Frequency3000.0 Hz
Rolling FX
Rolling FX
FX Intensity ParameterIntensity
FX Tuning
项目设置中 Plugins > Crushform Wheels 下的 Rolling Sound 和 Rolling FX 分组。

每个车轮都有自己的滚动声音和滚动特效。两者都跟随车轮下方的路面,并随车轮加速而逐渐出现。声音就是该路面的滚动循环音,特效则是该路面的 Niagara 系统。两者都只是呈现效果:它们在渲染这辆车的每个端上播放,专用服务器则两者都不播放。

轿车在 MUD 车道上刹车,车轮后方扬起一团棕色泥浆,车身侧面溅上新鲜泥浆。
在 MUD 车道上刹车:泥浆滚动特效在车轮后方甩出泥浆。
  • 两个组件。 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 中。车辆可以在其适配器上,或在组件本身上,覆盖声音调校和特效调校。
  1. 在 Project Settings > Plugins > Crushform Wheels 中,检查 Attenuation。默认为 SA_CF_TireRolling。如果你有自己的 Sound Class,请进行设置;没有则留空,使用默认类。
  2. 在路面表中,为每一行设置 Rolling Sound 和 Rolling FX。声音必须是循环资产(参见故障排除)。路面表的说明见车轮与路面。
  3. 在车辆适配器上勾选 Rolling Sound 和 Rolling FX。两者默认都是开启的。
  4. 要制作自己的特效,请创建一个 Niagara 系统,并带有一个名为 Intensity 的浮点用户参数,这是项目的默认参数名。把它设为某一行的 Rolling FX。如果参数使用其他名称,请在该行中把 Rolling FX Intensity Parameter 设为该名称。
  5. 要调校单辆车,请在其适配器上勾选 Override Rolling Sound Tuning 或 Override Rolling FX Tuning,并在那里设置数值。

在蓝图中,通过适配器的 Set Braking 施加刹车,取值从 0 到 1。当听者进入或离开车辆时,用 Set Cabin Muffled 为车厢隔音。下方的蓝图在自定义事件 SetCabinState 触发时运行,为车厢隔音,然后把刹车设为最大。

当自定义事件 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

运行 Lvl_ProvingGround,把轿车从 ASPHALT 路段开上 DIRT、MUD 和 SNOW 路段。滚动声音会随每种路面改变,每个车轮都显示其下方路面的特效。在泥土上用力刹车,刹车期间特效甩得更猛。运行 stat CrushformWheel 可以显示车轮组件的统计数据。

原因。 有三种情况会让声音无声。适配器或 Crushform Wheels 中的 Rolling Sound 关闭。Attenuation 为空,插件会在组件开始播放时记录下面这行日志:

%s: no Attenuation in Project Settings > Plugins > Crushform Wheels; the rolling sound stays off

专用服务器上的声音同样无声。

修复。 在适配器上勾选 Rolling Sound,在 Crushform Wheels 中设置 Attenuation,并在客户端或监听服务器上测试。

原因。 只有当听者处于衰减的最大距离之内时,车轮才会播放声音。这是有意为之,因此远处的车辆不占用任何资源。

修复。 让听者靠近一些;如果希望声音传得更远,就加大衰减的范围。

原因。 声音资产没有设为循环。插件会在某个车轮第一次播放该资产时,为每个资产记录一次日志:

%s: rolling sound '%s' is not looping - it will cut out between restarts. Set bLooping on the asset.

修复。 在声音资产上设置 Looping。

原因。 该行的 Rolling FX 为空,或者它不是 Niagara 系统。位于这种行上的车轮会停止其特效。

修复。 把该行的 Rolling FX 设为一个 Niagara 系统,例如 NS_CF_Rolling_Mud。

原因。 当车身以及最快的着地车轮都慢于 Sleep Speed KPH(默认为 1 km/h)时,特效进入休眠。

修复。 在调校中降低 Sleep Speed KPH,或将其设为 0,使特效永不休眠。