当前位置: 首页 > news >正文

Unreal Engine Simulate Physics

Unreal

  • 📦 **Unreal Engine - Simulate Physics**
    • 📝 定义
    • 🏛 类继承
    • ⚡ 关键特性
    • ⚙️ 常见配置
    • 🛠️ 使用方法
      • 代码方式
      • 蓝图方式
    • 🎮 典型应用场景
    • 🔗 与其他组件对比
    • 📚 小结

📦 Unreal Engine - Simulate Physics


📝 定义

Simulate PhysicsUnreal Engine 中 Actor 或 Component 的一个物理模拟选项

当启用后,该对象会受物理系统(Physics Engine,例如 PhysX 或 Chaos)的控制,从而实现 重力、碰撞、力与冲量 等物理效果。


🏛 类继承

Simulate Physics 并不是一个类,而是 组件(通常是 UPrimitiveComponent 或其子类,如 UStaticMeshComponentUSkeletalMeshComponent)的布尔属性

相关核心类:

  • UPrimitiveComponent → 拥有 SetSimulatePhysics(bool) 接口。
  • UStaticMeshComponentUSkeletalMeshComponent → 常用于实际启用物理。

⚡ 关键特性

  • 真实物理模拟:自动受力、重力、摩擦、阻力、碰撞影响。
  • 动力学交互:支持 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 PhysicsProjectileMovementComponentCharacterMovementComponent
控制方式完全由物理引擎驱动由组件计算并施加速度专门为角色控制设计
精确度真实物理响应近似物理的可预测运动规则化的人物运动
常用场景碎片、布娃娃、动力学物体子弹、火箭、魔法弹道玩家角色、NPC

📚 小结

  • Simulate Physics 并非类,而是物理模拟开关,核心在 UPrimitiveComponent
  • 启用后,物体交由物理引擎驱动,可实现真实物理效果。
  • 常用于 布娃娃、物理交互、动态碎片 等场景。
  • 对于 可控角色或抛射物,往往结合 CharacterMovementComponentProjectileMovementComponent 使用,而不是单纯依赖物理模拟。

http://www.dtcms.com/a/346207.html

相关文章:

  • MySQL InnoDB记录存储结构深度解析
  • windows 帮我写一个nginx的配置,端口是9999,静态资源的路径是D:\upload
  • 企业架构之微服务应用架构
  • 深入理解底层通信协议和应用层协议的区别
  • Java Stream常见函数与应用案例
  • 大模型应用发展与Agent前沿技术趋势(下)
  • Debezium导致线上PostgreSQL数据库磁盘日志飙升处理方案
  • Unreal Engine ATriggerVolume
  • java 海报、图片合成
  • 蓝牙部分解析和代码建构
  • SSH如何访问只有没有公网IP的云服务器
  • loss 基本稳定,acc 一直抖动,如何优化?
  • assetbuddle hash 比对
  • 【计算机网络】 IPV4和IPV6区别
  • JSON学习和应用demo
  • 每日算法题【链表】:移除链表元素、反转链表
  • 嵌入式第三十五课!!Linux下的网络编程
  • 非标机械设备工厂,一般会遇到哪些问题
  • Linux服务器查看启动服务的5种方法
  • 基于RBAC的权限控制:从表设计到接口实现全指南
  • Beszel 服务器监控平台使用教程
  • JVM虚拟机
  • Leetcode—1683. 无效的推文【简单】
  • 网络与信息安全有哪些岗位:(7)等级保护测评师
  • tensorflow-gpu 2.7下的tensorboard与profiler插件版本问题
  • 第九章 Leaflet 实战:多边形绘制工具开发与面积实时计算(含双击报错修复方案)
  • Qt QML实现 无边框圆角窗口拖动(附窗口控制按钮)
  • RAG初筛方案实例验证-多种BM25方案
  • 类器官培养基系列,助力高效医学研究
  • Navicat连接MySQL-出现1045无法连接问题