基础知识补全_物理相关

物理模拟(SimulatePhysics)

—————懒得写副标题了zzz

勾选一个组件的 Simulate Physics 时,该组件就不再由你手动控制位置/旋转,而是交给UE的物理引擎(PhysX 或 Chaos)去驱动。

 

部分核心参数:

参数

含义

Mass

(质量)

物体的“重量”。质量越大,越难被推动,下落时惯性越大,撞击力越强。

Linear Damping

(线性阻尼)

阻碍线性运动(移动)的“空气阻力”。值越大,物体水平移动时减速越快。

Angular Damping

(角阻尼)

阻碍旋转运动(转动)的“空气阻力”。值越大,旋转停止得越快。

Enable Gravity

(启用重力)

是否受重力影响。关闭后物体会飘在空中。

Simulation Generates Hit Events

(模拟生成命中事件)

是否在碰撞时生成事件(如 OnComponentHit),便于蓝图响应撞击。

Collision Presets

(碰撞预设)

预置的碰撞反应规则,比如 PhysicsActor 表示会与其他物理物体碰撞。

Restitution

(弹力)

碰撞后反弹的程度。0 = 完全不反弹,1 = 几乎完全弹性碰撞。

Friction

(摩擦力)

接触面之间的阻力。影响滑动停止的快慢。

 

比如需要固定住物理模拟时不会有Roll的旋转该怎么设置:约束中锁定旋转

 

 

角色移动物理交互(Physics Interaction)

Physics Interaction(物理交互)是角色移动组件(Character Movement Component)上的一个功能开关。决定了角色在移动时,是否能对场景中开启了物理模拟(Simulate Physics)的物体施加物理影响,以及影响的程度。比如:

角色在移动时,能对物理物体施加多大的推动力。

角色在与物理物体碰撞时,自身会承受多大的反作用力。

相比直接在蓝图里写逻辑,使用这个UE原生组件性能表现会更好,但与大量物理对象交互仍然会带来性能开销。

 

 

物理资产(PhysicsAsset)

PhysicsAsset可以理解为是参与物理模拟物体所必须定义的“身体形状”,专门用于骨骼网格体,通常分为两种:

简单碰撞:(Primitive Collision):用盒子、球体、胶囊体等基本几何体近似物体的外形,性能极佳,适合大多数道具、墙壁、角色。

复杂碰撞:(Convex / Triangle Mesh):使用模型的精确形状生成碰撞,性能较差,仅在需要精确碰撞时使用(如复杂的石头、雕像)。

 

而这个“身体形状”由两部分组成:

Body(刚体):为每一根(或选中的)骨骼生成一个碰撞体(通常是胶囊体、球体、盒体),决定了骨骼的物理形状。

Constraint(约束):定义相邻骨骼之间的连接关系,限制了它们的相对运动(旋转角度、位移范围)。

物理资产 UE官方文档

 

 

形状组件(ShapeComponent)

Shape Component是虚幻引擎中所有基础几何碰撞体的基类 。是一个不可见的体积,专门用于碰撞检测(Collision)和物理模拟(Physics),而不负责渲染视觉效果。

角色蓝图里可添加的形状组件,则是ShapeComponent的子类实例。

形状组件 UE官方文档

形状组件与物理资产的部分特性对比:

特性

ShapeComponent (形状组件)

PhysicsAsset (物理资产)

本质

一个组件(Component)

一个资产(Asset)

应用对象

任何Actor(如角色、道具、环境物体)

专门用于SkeletalMesh(骨架网格体)

复杂程度

简单:单个几何形状(球、盒、胶囊等)

复杂:由多个为不同骨骼定义的物理形体(Physics Bodies)和约束(Constraints)组成

主要用途

为物体提供基础的碰撞检测或作为触发器(Trigger)

为骨骼网格体(如角色、布娃娃)实现精细的、关节驱动的物理模拟

编辑方式

在蓝图或关卡中直接添加和调整属性

在专用的物理资产编辑器(Physics Asset Editor)中编辑

典型例子

角色的胶囊体碰撞、子弹的球体碰撞、火球的触发器

角色的布娃娃系统、带有悬挂和车轮的车辆物理

 

 

物理对象(Body Instance)

可以理解为一个组件的物理配置,记录了各种物理相关配置:是否碰撞、是否模拟物理、是否受重力影响、质量等等。

一个普通的Shape Component,比如Box Component,对应的Body Instance,以及一个Skeletal Mesh Component对应的Body Instance,是不太一样的。

Shape Component 通常对应一个 Body Instance,Body Instance 保存该碰撞体的物理和碰撞配置。

而Skeletal Mesh Component通常不只有一个Body Instance,而是会为Physics Asset中的多个物理体分别维护Body Instance。比如说一个人物,会有头、身体、左右手等等,每个部位会对应多个Body Instance。

物理对象属性参数参考 UE官方文档

 

 

物理动画组件(Physical Animation Component)

让角色播放动画的同时,还能受到物理影响的组件。

 

典型用途:

角色被击中时,受击部位短暂地切换到物理模拟,产生自然的受击反应

角色死亡或失去意识时,从关键帧动画平滑过渡到布娃娃状态。

为角色的某些部位(如头发、披风、悬挂的武器)添加物理效果,使其在运动时自然摆动。

 

 

 

对象类型(Object Type)

本质是个标签,不会改变本身的物理属性。

而另一个Actor的碰撞逻辑引用到这个标签时,这两Actor之间的物理交互才会有实质性的影响。

举个粒子就是一个Acotr忽略所有Object Type是Pawn的Actor的碰撞,而你把Pawn改成了其他的Object Type,那着两就不会忽略碰撞了。

 

除了UE自带的类型,还可以自己添加类型。

 

 

碰撞相关配置

UE中自带一些碰撞预设,多数情况直接套用即可,也可以选择Custom来逐项自定义。

参数相关可以直接细读一下官方文档里的碰撞响应参考部分:碰撞 UE官方文档

UE中碰撞分为物理模拟(Physics)和空间查询(Query),前者用于物理效果模拟,后者常用于射线检测等。

这个Probe是啥(

碰撞响应Block、Overlap、Ingore类型概念:

 

 

学习任务

给SKM_SphereCube添加一个PhysicsAsset,命名PA_SphereCube,满足一个圆柱碰撞包住整个模型的要求(似乎没有圆柱体的预设)

空场景中,让2.2中制作的BP_SphereCube进行物理模拟,且玩家控制的角色碰到这个物理模拟角色时,可以踢开

设置这个BP_SphereCube角色为,玩家控制的角色不能站上去

骨骼网格体组件中,对Pawn设置为Overlap即可,这样物理会对角色响应物理模拟被踢飞,同时角色也只能穿过这个物体。

 

 

其他

—————往后再看吧

物理子步(Physics Sub-stepping)与性能相关

部分物理“抖动”或“穿透”的BUG情况:

当帧率较低时,物理引擎计算步长变大,可能导致快速物体穿过薄墙。

引擎有个“子步 (Sub-stepping)”设置,用于在单帧内拆分多次计算。

物理子步

 

Tick与性能相关

通常UE里一帧会Tick一次

可以通过对特定Actor通过降低Tick频率的方式省性能

Actor Ticking

 

Actor生命周期

 

角色移动组件联网相关

角色移动组件

 

两个图元叠加在一起,似乎在场景中出现了抽搐或者自动移动的情况

物理资产编辑器 UE官方文档

guest
0 评论
内联反馈
查看所有评论