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

参考组件

UCFTireComponent

模块CrushformTire头文件CFTireComponent.h父类UActorComponent

每辆车一个。追踪车辆的车轮,拥有预算所准许的每个车轮的形变器,并在宿主放置车轮网格体之后对其 tick。拥有者需实现 ICFTireHost。

函数

AUTHORITY · 服务器,每个端LOCAL · 本机PURE · 只读
void SetProfile(UCFTireProfile* InProfile)
C++ ONLY

设置轮胎配置文件。在 BeginPlay 之后设置时,配置文件还会将开始运行时未带配置文件的组件纳入子系统的预算。

UCFTireProfile* GetProfile() const
PUREC++ ONLY

轮胎配置文件,或 null。

void SetCrushformHost(UObject* NewHost)
C++ ONLY

由谁代为响应本组件的 ICFTireHost;为 null 时取注册表中该拥有者的宿主,否则取拥有者本身。须在 BeginPlay 之前调用:组件会从宿主读取一次车轮,直至调用 ForgetWheels 为止。

UObject* GetCrushformHost() const
PUREC++ ONLY

显式指定的宿主;否则为 UCFHostRegistry::FindHost(Owner, UCFTireHost);再否则为 null。

void ResolveWheels()
C++ ONLY

宿主首次报告任何车轮时,读取一次其车轮,并将每个轮胎下移至着地。宿主可能在 BeginPlay 之后才构建其车轮网格体,因此调用方需再次请求,直至列表不再为空。

void ForgetWheels()
C++ ONLY

将每个车轮恢复为宿主原有的状态(不带形变器、使用宿主自身的偏移量、网格体自身的渲染状态),并清空列表,使下一次 ResolveWheels 重新读取宿主的车轮。车轮组发生变化的宿主,必须在替换其列表之前(BEFORE)调用它:偏移量会依据其仍持有的列表中各车轮的索引,经由宿主逐一恢复。切勿从本组件发起的宿主回调内部调用它(加载更新期间的 GatherLoadRatios 会遍历 Wheels,而此调用会将其清空)。

const TArray<FCFTireWheel>& GetWheels() const
PUREC++ ONLY

从宿主读取的车轮;在 ResolveWheels 找到车轮之前为空。

float FindRimRadiusInMaterials(TConstArrayView<const UMaterialInterface*> Materials)
C++ ONLY

轮辋半径,单位为网格单位,取自轮胎材质的标量 RimRadius;没有材质具有它时为 0。第一个自身设置了 RimRadius 的材质优先。否则,由第一个带有该参数的材质提供其继承的默认值,因此同一母材质上的轮辋材质不会盖过轮胎自己的值。空材质会被跳过。

void GrantWheel(int32 WheelIndex, uint8 Tier)
C++ ONLY

以该档位的追踪密度为车轮分配一个形变器,或将已有形变器移至该档位并重新开启其追踪。

void RevokeWheel(int32 WheelIndex)
C++ ONLY

车轮退出预算:其形变器停止追踪,凹陷逐渐消退。形变器会保留,直到 DestroyRelaxedDeformers 发现其已恢复原状,以免轮胎突然弹回圆形。

int32 DestroyRelaxedDeformers()
C++ ONLY

移除已无凹陷的淡出形变器,并返回仍在淡出的车轮数量。没有任何形变器剩余时,关闭 tick。

FCFTireDeformer* FindDeformer(int32 WheelIndex)
C++ ONLY

车轮的形变器;没有时为 null。该指针在车轮被重新解析或形变器被移除之前有效。

void SetDrawDebug(bool bInDrawDebug)
C++ ONLY

绘制每个形变器的射线和接触点。

void SetRestingSink(bool bInRestingSink)
C++ ONLY

关闭时:没有形变器的车轮会停在地面上,而不是按静止挠度下沉。仍带有形变器的车轮保持下沉状态。

void UpdateLoadSink(float DeltaTime)
C++ ONLY

将每个发生形变的车轮的载荷系数逐步趋近宿主报告的值,并在其变化明显时重新应用其偏移。

float StepLoadFactor(float CurrentFactor, float LoadRatio, const UCFTireProfile& Profile, float DeltaTime)
C++ ONLY

车轮载荷系数的一步平滑。目标值为 1 + LoadSensitivity * (LoadRatio - 1),并限制在 [0, MaxLoadFactor] 范围内;系数在 LoadAttackTime 内上升,在 LoadReleaseTime 内下降。LoadRatio 为宿主接触力与标称载荷之比。

属性

TObjectPtr<UCFTireProfile> Profile

用于调节形变的轮胎配置。未设置时,车辆的轮胎保持圆形。

分类
Tire Deformation