刚体
要在引擎中模拟基于物理的运动、重力、碰撞等行为,需将场景中的物体配置为刚体,可以通过为物体添加刚体组件,该内置组件位于“内置脚本->物理->刚体”位置,对应引擎脚本中的NRigidBodyComponent。
一般地,物体具有刚体脚本时,应通过其刚体属性进行物体移动的控制,如添加力或添加扭矩,若直接修改Transform属性来移动物体,可能会导致物理模拟计算异常。
碰撞体用于定义刚体的物理边界,要使碰撞生效,必须为带有刚体组件的物体添加碰撞体组件。当两个物体相撞时,物理系统仅在两个物体都具备碰撞体时才会计算碰撞,若物体仅有刚体组件而无碰撞体组件时,将直接穿透且不参与碰撞计算,碰撞时的相互作用效果由各刚体的质量决定。
刚体组件添加:选中要添加刚体组件的物体,在属性面板的下方选择“添加组件->内置脚本->物理->刚体”。
刚体组件的属性面板如下: 
| 属性 | 功能 |
|---|---|
| 运动学 | 是否启用动力学,默认不启用 |
| 重力 | 是否受重力影响,默认启用 |
| 质量 | 物体质量 |
| 线速度阻尼 | 线性阻力系数 |
| 角速度阻尼 | 旋转阻力系数 |
- API:NRigidBodyComponent.h
| 接口 | 参数 | 描述 |
|---|---|---|
| void SetIsIsKinematic(bool value); bool GetIsIsKinematic(); | value:是否开启运动学属性 | 可以获取或设置刚体组件是否开启运动学属性,该属性默认关闭 |
| void SetIsUseGravity(bool value); bool GetIsUseGravity(); | value:是否受重力影响 | 可以获取或设置物体是否受重力影响 |
| void SetMass(float value); float GetMass(); | value:物体质量值 | 设置或获取物体的质量 |
| void SetLinearDamping(float value); float GetLinearDamping(); | value;线速度阻尼值 | 设置或获取线速度阻尼值 |
| void SetAngularDamping(Vector3 value); Vector3 GetAngularDamping(); | value:角速度阻尼值 | 设置或获取角速度阻尼值 |
| void SetLinearVelocity(Vector3 value); Vector3 GetLinearVelocity(); | value:线速度 | 设置或获取线速度 |
| void SetAngularVelocity(Vector3 value); Vector3 GetAngularVelocity(); | value:角速度 | 设置或获取角速度 |
| void AddForce(Vector3 value); Vector3 GetForce(); | value:力大小 | 向物体施加力 |
| void SetTorque(Vector3 value); Vector3 GetTorque(); | value:扭矩大小 | 向物体施加扭矩 |

