Skip to content

刚体

要在引擎中模拟基于物理的运动、重力、碰撞等行为,需将场景中的物体配置为刚体,可以通过为物体添加刚体组件,该内置组件位于“内置脚本->物理->刚体”位置,对应引擎脚本中的NRigidBodyComponent。

一般地,物体具有刚体脚本时,应通过其刚体属性进行物体移动的控制,如添加力或添加扭矩,若直接修改Transform属性来移动物体,可能会导致物理模拟计算异常。

碰撞体用于定义刚体的物理边界,要使碰撞生效,必须为带有刚体组件的物体添加碰撞体组件。当两个物体相撞时,物理系统仅在两个物体都具备碰撞体时才会计算碰撞,若物体仅有刚体组件而无碰撞体组件时,将直接穿透且不参与碰撞计算,碰撞时的相互作用效果由各刚体的质量决定。

刚体组件添加:选中要添加刚体组件的物体,在属性面板的下方选择“添加组件->内置脚本->物理->刚体”。 alt text 刚体组件的属性面板如下: alt text

属性功能
运动学是否启用动力学,默认不启用
重力是否受重力影响,默认启用
质量物体质量
线速度阻尼线性阻力系数
角速度阻尼旋转阻力系数
  • 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:扭矩大小向物体施加扭矩