Add Impulse:对刚体施加一次性的线性脉冲(瞬时改变量),改变速度(与质量有关,除非你勾
bVelChange
)。Add Torque (in Radians):对刚体施加转矩/旋转力(向量的方向是旋转轴,长度是强度),用于让物体转动;有个
Accel Change
参数,勾上则把它当作角加速度变化(忽略转动惯量/质量相关性)。
关键参数解释(少见但重要)
Impulse(向量):方向 + 强度。物理上
Δv = impulse / mass
(若不勾bVelChange
,质量会影响真实速度变化)。若勾bVelChange
,引擎把你传入的向量当作直接的速度变化(质量不生效)。Torque(向量):向量的方向表示“绕哪个轴转”,长度表示“多少力矩”。
Accel Change
= true 时,忽略惯性/质量,直接改变角加速度(方便做一致感受的控制)。
AddForce / AddImpulse / AddTorque 的区别(何时用哪个)
AddForce:持续力(应每帧持续调用),用于模拟发动机推力、风力等;会随每帧累积。
AddImpulse:一次性冲击(炸开、被击中、发射),通常只调用一次。
AddTorque(或 AddAngularImpulse):作用在旋转上的“力”。如果想持续推动物体旋转每帧用 AddTorque;如果想来一瞬的转动脉冲用 AddAngularImpulse / AddAngularImpulseInRadians(类似线性那边的区分)。
常见问题 / 坑
世界空间 vs 物体本地轴:Blueprint 的 Torque 向量通常是按世界坐标解释的(如果想按物体朝向施加,先把向量用物体的旋转转换为世界空间)。论坛/实践也多这样讨论。
顶点/碰撞体质量与惯性:若你希望大小不同质量对象响应一致(例如玩家控制感觉一致),可以勾
bVelChange
(线性)或Accel Change
(角向),这样质量/惯量不会改变效果。Impulse 在 Character vs Primitive 的差异:Character 的 movement 有专用 API(CharacterMovement::AddImpulse 等),行为可能与直接对 PrimitiveComponent 调用有所不同(会影响 movement mode)。