原有概念:
Body:
- 可以包含多个形状,通常只会包含一个胶囊体或长方体
- 是否启用物理,是否启用重力,以及质量、Linear Damping、Angular Damping等物理参数
- 对应物理引擎中的Rigidbody(PhysX的PxRigidActor或Chaos的FSingleParticlePhysicsProxy)
- 可以理解为骨骼+骨骼的物理属性
Constraint:
- 父子Body之间的位移和旋转约束(Free/Limited/Locked),可以单独设置任意一个轴的约束类型
- 如果模拟关节的话,位移约束应选择Locked,旋转约束选择Limited,这样骨骼不会脱离,而是围绕关节在一定角度范围旋转
- 还包括是否启用碰撞、硬度(Stiffness)、阻尼(Damping)、恢复系数(Restitution)等参数
- 可以理解为关节
Constraint Profile:
- 多个Constraint的配置,可以创建多个Constraint Profile,在运行时切换
新增概念:
Body Modifier:
- 一个Body Modifier对应一个Body
- 可以修改Body是否启用物理、是否启用重力等
- 在UPhysicsControlComponent的Tick里执行
- 命名规则是”BoneName_NUMBER”
Body Modifier Set:
- 对应多个Body Modifier
- 内置了”All”Set,其他Set需要我们自己创建
- 通过UPhysicsControlComponent::CreateControlsAndBodyModifiersFromLimbBones函数可以方便地为四肢创建Body Modifier Set,并且为四肢中的每个骨骼都创建一个Body Modifier
Control:
- 一个Control对应一个Constraint,Control会创建FConstraintInstance
- 可以修改Constraint是否开启碰撞、硬度(Stiffness/Strength)、阻尼(Damping)、Max Force、Max Torque等参数
- 在UPhysicsControlComponent的Tick里执行
- Control的命名规则是”ParentBoneName_ChildBoneName_NUMBER”
Control Set:
- 对应多个Control
- 内置了”WorldSpace”和”ParentSpace”两个Set,其他Set需要我们自己创建
- 通过UPhysicsControlComponent::CreateControlsAndBodyModifiersFromLimbBones函数可以方便地为四肢创建Control Set,并且为四肢中的每个骨骼都创建一个Control,每个Limb创建两个Set,命名为ParentSpace_LimbName和WorldSpace_LimbName
被击
Body配置:
- Linear 0
- An 0.01
Constraint配置
- 全部勾选Disable Collision
- Projection Linear Tolerance和Projection Angular Tolerance全部清零