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

参考数据资产

UCFTreeConfig

模块CrushformBreakable头文件CFTreeConfig.h父类UPrimaryDataAsset

某一种可破坏树木的调节:质量、屈服行为、关节驱动、伐倒、撞击与落地事件、反馈标签以及重生。碰撞几何体来自网格体,此处不做重复设置。

函数

AUTHORITY · 服务器,每个端LOCAL · 本机PURE · 只读
bool ValidateTreeConfig(FString& OutError) const
PUREC++ ONLY

仅检查那些会在运行时静默失败的不变量。若某项被破坏,则返回 false 并填充 OutError。可在运行时调用,因此树木可以在配置有误时拒绝启用。

属性

float MassKg = 900.f
默认值
900.f
分类
Crushform|Tree
ECFTreeYieldMode YieldMode = ECFTreeYieldMode::FellAndFall
默认值
ECFTreeYieldMode::FellAndFall
分类
Crushform|Tree
float YieldAngleDegrees = 15.f
默认值
15.f
分类
Crushform|Tree|Yield
float FellingDriveFadeSeconds = 0.01f

保持在最小值或接近最小值。在屈服瞬间,驱动的位置强度仍接近满值,它会对刚刚越过 YieldAngleDegrees 的微小角度误差产生远超其比例的回复力矩;若淡出时长超过约一帧,它会在倒下阻尼接管之前将树干拉回到 YieldAngleDegrees 以下。该参数的值等于或小于一帧的 delta time(60 Hz 下约为 0.0167 s)时,会在第一个倒下步骤中移除弹簧。

默认值
0.01f
分类
Crushform|Tree|Felling
float FellingDampingStrength = 3.5e8f

FORCE 模式:原始的力矩尺度阻尼系数,与 DrivePositionStrength 和 DriveVelocityStrength 处于同一数量级,而不是它们的一小部分。倒下的节奏无法通过解析方式推导。使用 900 kg 松树树干和默认驱动时,仅由重力决定的下限约为从屈服到释放 1.3 s(阻尼在约 1e5 以内时保持不变);默认的 3.5e8 约为 2.7 s,大约是该下限的两倍。对于其他形状或质量的树干,请重新测量(Crushform.Trees.Felling.PacedFall 可测量测试树干的节奏)。

默认值
3.5e8f
分类
Crushform|Tree|Felling
float ReleaseAngleDegrees = 65.f
默认值
65.f
分类
Crushform|Tree|Felling
float VehiclePassThroughDelaySeconds = 1.f

仅 FellAndFall 有效。在每一端上从倒下开始时本地计时(预测中的客户端从其预测开始,确认中的客户端从其确认开始);不进行复制。使附近的车辆有时间在倒下的树干停止阻挡之前做出反应。0 表示立即切换。

默认值
1.f
分类
Crushform|Tree|Felling
float StopAngleDegrees = 45.f

仅 BendAndLock 有效。这是逐轴的摆动限制:Swing1 和 Swing2 都使用此值,因此它不是与竖直方向的普通夹角。以真实速度到达的树干会停在锥体的角落处,最大约为此值的 sqrt(2) 倍(对于 45 度配置约为 63 度);缓慢的准静态到达则停在标称值。对于最坏情况,可按 target lean / 1.4 设定,并在 PIE 中针对预期的撞击速度确认稳定后的角度。

默认值
45.f
分类
Crushform|Tree|Felling
float BendAndLockLockStrengthMultiplier = 100.f

仅 BendAndLock 有效。当驱动保持树干停住时的姿态时,它是 DrivePositionStrength 和 DriveVelocityStrength 的倍数。硬锥体只限制树干倾倒的幅度,不限制方向,因此停靠在止动位的电线杆需要远高于站立树木的强度,才能在侧向推力下保持其方向,且效果强烈非线性。以 900 kg 树干、StopAngleDegrees 45 和持续 2 s、力为 8e6 kg*cm/s^2 的推力测量:1 倍时方向偏移了 103 度,10 倍时为 82 度,30 倍时为 61 度,100 倍时保持住了(推力期间 5.8 度,释放后残留 1.8 度)。倍数能保持 1:10 的刚度与阻尼比。若换用其他树干或更强的推力,请重新测量(Crushform.Trees.Felling.LockedAzimuthHoldsAgainstPush)。

默认值
100.f
分类
Crushform|Tree|Felling
float YieldConfirmTimeoutSeconds = 0.75f
默认值
0.75f
分类
Crushform|Tree|Net
float DrivePositionStrength = 5.0e8f

两种屈服模式下弹性范围内的恢复弹簧:硬锥体限制在锥体内部不提供恢复力矩,因此没有它的话,高大的树干会在自身重量下倾倒。FORCE 模式:原始力矩,单位 kg*cm/s^2,与树干的转动惯量无关。Acceleration 模式会将弹簧按树干惯量归一化,使其变成任何车辆力矩都无法突破的墙(在保险杠高度上以 6e6 的推力只使 900 kg 树干移动了所需 15 度中的 0.66)。默认的 5e8 配合 DriveVelocityStrength 5e7,是已验证范围 5e6 至 5e8(阻尼始终为刚度的十分之一)中最强的点,而不是中间值:5e7/5e6 只能微弱地支撑 1 度的初始偏移(15 s 后为 4.17 度),且无法从 15 度的倾斜中恢复,因为重力造成的缓慢倾倒快过它的回复速度;而 5e8/5e7 能够收敛(从同样的初始偏移收敛到 0.83 度),并且仍能让 6e6 的推力在约 1.3 s 内将树干推倒。太弱则树干无法在自身重量下站立;太强则又变成了墙。

默认值
5.0e8f
分类
Crushform|Tree|Drive
float DriveVelocityStrength = 5.0e7f

FORCE 模式下同一驱动的速度部分:原始力矩,单位 kg*cm/s,每单位角速度。保持为 DrivePositionStrength / 10,这一比例已在整个范围内验证。为其他树干重新调参时,请保持该比例,并优先选择仍能让树干站立的最强点。

默认值
5.0e7f
分类
Crushform|Tree|Drive
float DriveForceLimit = 0.f
默认值
0.f
分类
Crushform|Tree|Drive
float BendWpoScale = 1.f
默认值
1.f
分类
Crushform|Tree|Visual
bool bFallenTrunkCollidesWithVehicles = false
默认值
false
分类
Crushform|Tree|Vehicles
float HitMinDeltaVCmS = 30.f
默认值
30.f
分类
Crushform|Tree|Events
float HitFullIntensityDeltaVCmS = 400.f
默认值
400.f
分类
Crushform|Tree|Events
float HitCooldownSeconds = 0.3f
默认值
0.3f
分类
Crushform|Tree|Events
float LandMinDeltaVCmS = 80.f
默认值
80.f
分类
Crushform|Tree|Events
float LandFullIntensityDeltaVCmS = 600.f
默认值
600.f
分类
Crushform|Tree|Events
FGameplayTag HitFeedbackTag
分类
Crushform|Tree|Feedback
FGameplayTag YieldFeedbackTag
分类
Crushform|Tree|Feedback
FGameplayTag LandFeedbackTag
分类
Crushform|Tree|Feedback
float RespawnDelaySeconds = 300.f
默认值
300.f
分类
Crushform|Tree|Respawn
float RespawnClearRadiusCm = 4000.f
默认值
4000.f
分类
Crushform|Tree|Respawn
TArray<TEnumAsByte<ECollisionChannel>> RespawnBlockingObjectTypes = { ECC_Vehicle, ECC_Pawn, ECC_PhysicsBody }
默认值
{ ECC_Vehicle, ECC_Pawn, ECC_PhysicsBody }
分类
Crushform|Tree|Respawn
bool bRespawnOnlyWhenUnseen = true
默认值
true
分类
Crushform|Tree|Respawn
float RespawnUnseenHalfAngleDegrees = 70.f
默认值
70.f
分类
Crushform|Tree|Respawn
float RespawnUnseenDistanceCm = 15000.f
默认值
15000.f
分类
Crushform|Tree|Respawn
float RespawnSinkSeconds = 3.f
默认值
3.f
分类
Crushform|Tree|Respawn