参考组件
UCFImpactFeedbackComponent
模块CrushformImpact头文件CFImpactFeedbackComponent.h父类UActorComponent
将单个基元的刚体撞击转换为撞击反馈事件。仅限本机:每一端判定其所见的撞击,并通过撞击反馈子系统播放;不做转发。当速度变化达到 Min Impulse Per Kg,且开始接触或在一次之内发生跳变时,即计为一次撞击,因此静止在地面上的刚体保持无声。使用 SetObservedPrimitive 设置基元。
函数
AUTHORITY · 服务器,每个端LOCAL · 本机PURE · 只读
float ComputeIntensity(float ImpulseMagnitude, float MassKg, float OtherMassKg, float MinImpulsePerKg, float ImpulsePerKgForFullIntensity)
C++ ONLY
命中的强度,0..1,取决于被命中刚体每千克所受的冲量(即其速度变化,单位 cm/s);低于 MinImpulsePerKg 时为负值。与会让开的刚体相撞时(OtherMassKg > 0;不会让开的刚体则为 0),速度变化会被提升为撞向固定墙壁、吸收相同能量时的速度(UCFDeformComponent::GetEnergyScale):例如被汽车撞击的卡车速度几乎不变,但这依然是一场撞车。
uint64 MakeSourceId(const UPrimitiveComponent* Primitive)
C++ ONLY
撞击事件为 Primitive 携带的 ID,因此无论事件经由哪一端或哪条路径到达,其冷却时间都能生效。
void SetObservedPrimitive(UPrimitiveComponent* InPrimitive)
C++ ONLY
设置要上报命中的基元。可随时调用;在 Begin Play 之前调用时,组件会在那时进行绑定。
UPrimitiveComponent* GetObservedPrimitive() const
PUREC++ ONLY
要上报命中的基元;在调用 SetObservedPrimitive 之前为 null。
属性
FGameplayTag EventTag
- 分类
- Impact
float ImpulsePerKgForFullIntensity = 600.f
- 默认值
- 600.f
- 分类
- Impact
float MinImpulsePerKg = 50.f
- 默认值
- 50.f
- 分类
- Impact
float ContactGapSeconds = 0.1f
- 默认值
- 0.1f
- 分类
- Impact
float ContactSpikeRatio = 2.f
- 默认值
- 2.f
- 分类
- Impact