车辆CHAOS 适配器
Chaos 适配器
Crushform Chaos 车辆适配器用于 Chaos 轮式车辆:即带有 Chaos 移动组件的 AWheeledVehiclePawn。它从该移动组件获取车辆的车轮、发动机和车轮载荷,因此你无需列出任何车轮。插件内置的轿车使用的就是这个适配器。车辆适配器在车身、玻璃、轮胎、声音和撞击方面的所有功能,这里同样具备。本页介绍 Chaos 适配器额外增加的内容。
车轮。 适配器读取移动组件中的车轮设置和车轮状态。车轮的网格是附着在车辆网格上、位于该车轮骨骼处的网格组件。如果某个车轮的骨骼上没有网格,它就没有可以形变的轮胎,也不会有车轮污垢。适配器仍然会读取它与地面的接触。
轮胎。 轮胎沿车辆的上方向下沉,该操作在骨骼移动之后进行,因为车轮骨骼会旋转和转向。把车轮推离障碍物的推挤量会与下沉一起应用,采用车主坐标系;见 轮胎形变。适配器还会把每个车轮的载荷与其名义份额之比交给对应的轮胎。载荷来自悬挂的弹簧力,因此承重更大的车轮会读取到更高的载荷。
发动机。 Chaos 没有点火系统。只要移动组件存在,发动机就在运转。它的转速来自移动组件的发动机转速,其怠速和最高转速来自移动组件的发动机设置。它的负载来自驾驶员的油门,倒车时则还来自刹车踏板。由其他端驾驶的车辆不会读取本地踏板的负载,因此在你的端上听起来像是在滑行。
隐藏的设置。 Chaos 适配器会隐藏通用适配器中的车轮列表、Ground Channel 和 Ground Probe Margin,因为移动组件提供了车轮和地面接触点。这些设置在这里不起作用。
设置检查。 如果拥有者不是带有 Chaos 移动组件的 AWheeledVehiclePawn,适配器会记录一条错误,并报告没有车轮。适配器的其余部分仍会创建其组件。
从已满足快速入门要求的 Pawn 开始。添加适配器的步骤在快速入门的第 3 步中,这里只说明与之不同的部分。
-
按照快速入门第 3 步添加适配器:添加 Crushform Chaos Vehicle Adapter,而不是通用适配器。编译并保存。
-
选中适配器。设置 Deform Profile 和 Tire Profile,或将其留空以使用项目默认值。
-
检查功能开关。每个开关都会关闭它所对应的组件,与车辆适配器表格中的说明一致。
| Crushform | ||
|---|---|---|
| Authority | ||
| Deform Profile | None | |
| Tire Profile | None | |
| Ram Allowance Mps | 15.0 m/s | |
| Features | ||
| Dirt and Dents | ||
| Glass | ||
| Tires | ||
| Rolling Sound | ||
| Rolling FX | ||
| Engine Sound | ||
| Impact Feedback | ||
| Breaks Props | ||
- 检查每个车轮的网格是否位于其车轮骨骼上。只有骨骼的车轮不会获得轮胎形变和车轮污垢。
在 C++ 中读取发动机转速。先从 Pawn 获取 Chaos 适配器,然后调用其获取函数。每个签名都以头文件中的为准。你的模块必须在 Build.cs 中列出 Crushform 模块,参见安装。
#include "CFChaosVehicleAdapterComponent.h"
void AMyVehicle::UpdateHud(){ if (const UCFChaosVehicleAdapterComponent* Adapter = FindComponentByClass<UCFChaosVehicleAdapterComponent>()) { const float Rpm = Adapter->GetEngineRPM(); const float IdleRpm = Adapter->GetEngineIdleRPM(); const float MaxRpm = Adapter->GetEngineMaxRPM(); HudRpmFraction = (MaxRpm > IdleRpm) ? (Rpm - IdleRpm) / (MaxRpm - IdleRpm) : 0.f; }}要在 C++ 中修改适配器对某个车轮的应答,请在子类中覆盖其 _Implementation。在覆盖函数中通过 Super:: 调用同一个 _Implementation 函数,以保留 Chaos 的应答,且绝不按名称调用该事件。
Chaos 适配器继承了 UCFVehicleAdapterComponent 的以下设置。
每车调节值、撞击阈值和车厢数值的用法与车辆适配器页面中的相同。
检查是否正常工作
Section titled “检查是否正常工作”- 按 Play 并驾驶车辆。然后打开控制台,运行
stat CrushformChaos。会出现 Chaos Adapter Wheel Contacts 和 Chaos Adapter Tyre Offsets 的耗时。 - 运行
Crushform.Stats。撞击后,你的车辆对应的那一行会显示大于 0 的hits计数。 - 驶过泥地条带。车轮会变脏,车轮下方的地面会显示飞溅效果。
控制台命令在除 Shipping 之外的所有构建以及编辑器中都可用。
日志提示拥有者不是 Chaos 轮式车辆,适配器报告没有车轮
Section titled “日志提示拥有者不是 Chaos 轮式车辆,适配器报告没有车轮”原因。 Actor 不是带有 UChaosWheeledVehicleMovementComponent 的 AWheeledVehiclePawn。适配器找不到可供读取的移动组件。
修复。 将车辆的父类设为带有 Chaos 移动组件的轮式车辆 Pawn,如快速入门所要求的那样。只有对于不是 Chaos 车辆的 Actor,才使用通用的车辆适配器。
某个车轮没有轮胎形变,也没有车轮污垢
Section titled “某个车轮没有轮胎形变,也没有车轮污垢”原因。 该车轮只是一个骨骼。适配器只在车辆网格上、位于该车轮骨骼处的网格组件中查找车轮网格,而这个车轮没有这样的网格组件。
修复。 将车轮的网格组件附着到车辆网格上,并以该车轮的骨骼作为插槽。
发动机停在怠速,读数也一直停在怠速
Section titled “发动机停在怠速,读数也一直停在怠速”原因。 移动组件没有模拟发动机时,发动机转速读数为 0,声音就会以怠速播放。
修复。 检查车辆的发动机是否在模拟中运行,并确认发动机设置中有怠速和最高转速。
其他玩家的车听起来像是在滑行
Section titled “其他玩家的车听起来像是在滑行”原因。 适配器读取的是本地驾驶员的油门和刹车踏板。在由其他端驾驶的车辆上,这些踏板读数为 0,因此发动机声音会停留在滑行音量。
修复。 这是 Chaos 适配器的预期行为。若要在远程车辆上听到负载,请在适配器的蓝图子类中覆盖 GetEngineLoad,并根据你自己车辆复制得到的油门值返回结果。
