Unreal Engine Simulate Physics
Unreal
- 📦 **Unreal Engine - Simulate Physics**
- 📝 定义
- 🏛 类继承
- ⚡ 关键特性
- ⚙️ 常见配置
- 🛠️ 使用方法
- 代码方式
- 蓝图方式
- 🎮 典型应用场景
- 🔗 与其他组件对比
- 📚 小结
📦 Unreal Engine - Simulate Physics
📝 定义
Simulate Physics 是 Unreal Engine 中 Actor 或 Component 的一个物理模拟选项。
当启用后,该对象会受物理系统(Physics Engine,例如 PhysX 或 Chaos)的控制,从而实现 重力、碰撞、力与冲量 等物理效果。
🏛 类继承
Simulate Physics 并不是一个类,而是 组件(通常是 UPrimitiveComponent
或其子类,如 UStaticMeshComponent
、USkeletalMeshComponent
)的布尔属性。
相关核心类:
UPrimitiveComponent
→ 拥有SetSimulatePhysics(bool)
接口。UStaticMeshComponent
、USkeletalMeshComponent
→ 常用于实际启用物理。
⚡ 关键特性
- 真实物理模拟:自动受力、重力、摩擦、阻力、碰撞影响。
- 动力学交互:支持
AddForce()
、AddImpulse()
、AddTorque()
等函数。 - 与动画解耦:当 Skeletal Mesh 启用物理后,可以脱离动画进行布娃娃(Ragdoll)模拟。
- 网络复制:支持在多人游戏中同步物理状态。
⚙️ 常见配置
- Enable Gravity → 是否开启重力作用。
- Mass → 物体质量,决定受力反应。
- Linear/Angular Damping → 线性/角速度阻尼,影响运动衰减。
- Collision Enabled → 必须启用碰撞才能与其他物体交互。
- Constraints → 可锁定某些轴的移动或旋转。
🛠️ 使用方法
代码方式
UStaticMeshComponent* MeshComp = FindComponentByClass<UStaticMeshComponent>();
if (MeshComp)
{MeshComp->SetSimulatePhysics(true);MeshComp->SetEnableGravity(true);MeshComp->AddImpulse(FVector(0, 0, 500));
}
蓝图方式
- 选中 Static Mesh / Skeletal Mesh Component → 勾选 Simulate Physics。
- 在事件图中使用节点:
- Set Simulate Physics
- Add Force / Add Impulse
🎮 典型应用场景
- 布娃娃系统:角色死亡后启用物理模拟,变为 Rag Doll。
- 抛射物/碎片:子弹、石块、爆炸碎片。
- 物理交互:玩家推动箱子、拾取并抛掷物体。
- 破碎与破坏:物体在受力后崩解或动态破坏。
🔗 与其他组件对比
特性 | Simulate Physics | ProjectileMovementComponent | CharacterMovementComponent |
---|---|---|---|
控制方式 | 完全由物理引擎驱动 | 由组件计算并施加速度 | 专门为角色控制设计 |
精确度 | 真实物理响应 | 近似物理的可预测运动 | 规则化的人物运动 |
常用场景 | 碎片、布娃娃、动力学物体 | 子弹、火箭、魔法弹道 | 玩家角色、NPC |
📚 小结
- Simulate Physics 并非类,而是物理模拟开关,核心在
UPrimitiveComponent
。 - 启用后,物体交由物理引擎驱动,可实现真实物理效果。
- 常用于 布娃娃、物理交互、动态碎片 等场景。
- 对于 可控角色或抛射物,往往结合
CharacterMovementComponent
或ProjectileMovementComponent
使用,而不是单纯依赖物理模拟。