Unity 物理系统:Rigidbody(刚体)

Rigidbody组件

Unity 物理系统:Rigidbody(刚体)_第1张图片  Unity 物理系统:Rigidbody(刚体)_第2张图片

属性 释义 说明
Mass 质量 刚体的质量。
Drag 阻力 影响位置运动的阻力系数。
Angular Drag 角阻力 影响旋转运动的阻力系数。
Use Gravity 使用重力 物体是否受到重力的影响。
Is Kinematic 是运动学的 是否受物理系统影响。

Interpolate

  • None
  • Interpolate
  • Extrapolate

插值

  • 插值
  • 外推
定义游戏对象的运动是如何在物理更新之间插入的(当运动趋于颠簸时有用)。

Collision Detection

  • Discrete
  • Continuous
  • Continuous Dynamic
  • Continuous Speculative

碰撞检测

  • 离散的
  • 持续
  • 连续动态
  • 连续投机
定义碰撞器之间是如何检测碰撞的。

Constraints

  • Freeze Position
  • Freeze Rotation 

约束

  • 冻结位置
  • 冻结旋转
限制物体受力后移动与旋转的轴向
Info 信息 当前设置信息

Rigidbody类

属性

public Vector3 angularVelocity { get; set; } 刚体的角速度,单位为弧度/秒。
public float drag { get; set; } 物体的阻力。
public float angularDrag { get; set; } 物体的角阻力。
public float mass { get; set; }

刚体的质量。

public bool useGravity { get; set; } 刚体是否受到重力影响。
public float maxDepenetrationVelocity { get; set; }

刚体在脱离穿透状态时的最大速度。

设置此属性,可以使刚体脱离碰撞状态时更平稳。

public bool isKinematic { get; set; } 刚体是否受到物理影响。
public bool freezeRotation { get; set; } 是否允许/冻结物体旋转。
public RigidbodyConstraints constraints { get; set; } 是否约束刚体在某个轴上的移动或旋转。
public CollisionDetectionMode collisionDetectionMode { get; set; } 刚体的碰撞检测模式。
public Vector3 centerOfMass { get; set; } 相对于transform原点的质量中心。
public Vector3 worldCenterOfMass { get; } 刚体在世界空间中的质量中心(只读)。
public Quaternion inertiaTensorRotation { get; set; } 转动的惯性张量。
public Vector3 inertiaTensor { get; set; } 质量相对于质心的对角惯性张量。
public bool detectCollisions { get; set; } 是否应该启用碰撞检测(默认情况下总是启用)。
public Vector3 position { get; set; }

刚体的位置。

public Quaternion rotation { get; set; }

刚体的旋转。

public RigidbodyInterpolation interpolation { get; set; }

插值:允许刚体以固定的帧率平滑物理运行效果。

起到运动时平滑的效果。

public int solverIterations { get; set; } 求解迭代次数:

确定关节和接触点如何精确地计算。如果关节刚体有震荡和行为怪异,为solverIterationCount设置一个较高的值将改善他们的稳定性。

public int solverVelocityIterations { get; set; } 求解速度迭代:遇到关节刚体或布偶在碰撞后移动太多的问题,可以尝试增加这个值。
public Vector3 velocity { get; set; }

刚体的速度。

public float sleepThreshold { get; set; } 质量归一化的能量阈值,低于这个阈值,物体就会进入睡眠状态。
public float maxAngularVelocity{ get; set; } 刚体的最大角速度。(默认7)范围{0,无穷大}。

 方法

public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, [DefaultValue("0.0F")] float upwardsModifier, [DefaultValue("ForceMode.Force")] ForceMode mode);

public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, float upwardsModifier); 

public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius); 

摘要:对刚体施加一个模拟爆炸效果的力。
参数:

  • explosionForce:爆炸力的大小(可由距离改变)。
  • explosionPosition:爆炸产生影响的球体的中心,即爆炸点。
  • explosionRadius:爆炸产生影响的球体的半径,即爆炸波及范围。
  • upwardsModifier:类似爆炸时对物体产生的向上的推力。
  • mode:把力施加到目标物体上的方法。
ForceMode 力的模式(枚举)
Force 给刚体添加一个连续的力,使用刚体的质量。
Impulse 给刚体添加一个瞬间的力,使用刚体的质量。
VelocityChange 给刚体添加一个瞬间的加速度,忽略刚体的质量。
Acceleration 给物体添加一个持续的加速度,忽略刚体的质量。

public void AddForce(Vector3 force, [DefaultValue("ForceMode.Force")] ForceMode mode);

public void AddForce(Vector3 force); 

public void AddForce(float x, float y, float z); 

public void AddForce(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode); 

摘要:给刚体添加一个力。

参数:

  • force:添加到刚体上的相对于世界坐标的力的向量(向量是有方向和大小的)。
  • mode:施加的力的类型。
  • x:沿世界x轴的力的大小。
  • y:沿世界y轴的力的大小。
  • z:沿世界z轴的力的大小。

public void AddForceAtPosition(Vector3 force, Vector3 position, [DefaultValue("ForceMode.Force")] ForceMode mode);

public void AddForceAtPosition(Vector3 force, Vector3 position); 

摘要:给刚体上某位置/某点添加力。如果此位置不是刚体重心或此力的向量不经过重心,物体会在受力后发生旋转。
参数:

  • force:添加到刚体上的相对于世界坐标的力的向量。
  • position:相对于世界坐标的位置。
  • mode:施加的力的类型。

public void AddRelativeForce(Vector3 force, [DefaultValue("ForceMode.Force")] ForceMode mode);

public void AddRelativeForce(Vector3 force);  

public void AddRelativeForce(float x, float y, float z); 

public void AddRelativeForce(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode); 

摘要:向刚体添加一个相对于其自身坐标系/局部坐标系的力。
参数:

  • force:相对于局部坐标系中的力的向量。
  • mode:施加的力的类型。
  • x:沿局部x轴的力的大小。
  • y:沿局部y轴的力的大小。
  • z:沿局部z轴的力的大小。

public void AddRelativeTorque(float x, float y, float z);

public void AddRelativeTorque(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode); 

public void AddRelativeTorque(Vector3 torque, [DefaultValue("ForceMode.Force")] ForceMode mode); 

public void AddRelativeTorque(Vector3 torque); 

摘要:向刚体添加一个相对于其自身坐标系/局部坐标系的扭矩。
参数:

  • x:沿局部x轴的扭矩大小。
  • y:沿局部y轴的扭矩大小。
  • z:沿局部z轴的扭矩大小。
  • mode:施加的力的类型。
  • torque:相对于局部坐标系的力矩向量。

public void AddTorque(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode);

public void AddTorque(Vector3 torque); 

public void AddTorque(Vector3 torque, [DefaultValue("ForceMode.Force")] ForceMode mode);  

public void AddTorque(float x, float y, float z); 

摘要:向刚体添加一个相对于世界坐标系的扭矩。

  • x:沿世界x轴转矩的大小。
  • y:沿世界y轴转矩的大小。
  • z:沿世界z轴转矩的大小。
  • mode:施加的力的类型。
  • torque:相对于世界坐标系的力矩向量。

 public Vector3 ClosestPointOnBounds(Vector3 position);

摘要:获取指定位置(position)到该刚体附加的碰撞器的最近的点。(可以用来计算受到爆炸伤害时的伤害点数)

public Vector3 GetPointVelocity(Vector3 worldPoint);

摘要:获取刚体某点相对于世界坐标系的速度。

public Vector3 GetRelativePointVelocity(Vector3 relativePoint); 

摘要:获取刚体某点相对于局部坐标系的速度。

public bool IsSleeping();

摘要:获取刚体是否处于休眠状态。

刚体休眠完全自动发生。只要刚体的速度低于指定值(Physics.sleepThreshold;/Edit -> Project Settings -> Physics),该刚体就会开始休眠。

休眠是一种优化方式,处于休眠状态中的物体,不会再对其进行碰撞检测和模拟,从而节约大量CPU开销。

public void MovePosition(Vector3 position);

摘要:将刚体移动到指定位置。

参数:

  • position:刚体对象的新位置。

 public void MoveRotation(Quaternion rot);

摘要:将刚体旋转到指定角度。

参数:

  • rot:刚体要旋转到的指定角度。

public void ResetCenterOfMass(); 

摘要:重置刚体的质心。

public void ResetInertiaTensor();

摘要:重置惯性张量值和旋转。

public void SetDensity(float density); 

摘要:设置密度。基于附加的碰撞器假设一个固定的密度来设置质量。用来设置质量,随着碰撞器的尺寸而缩放。

public void Sleep();

摘要:强制刚体休眠至少一帧。

public bool SweepTest(Vector3 direction, out RaycastHit hitInfo);

public bool SweepTest(Vector3 direction, out RaycastHit hitInfo, float maxDistance); 

 public bool SweepTest(Vector3 direction, out RaycastHit hitInfo, [DefaultValue("Mathf.Infinity")] float maxDistance, [DefaultValue("QueryTriggerInteraction.UseGlobal")] QueryTriggerInteraction queryTriggerInteraction);

 摘要:扫描监测。检测刚体的某方向上是否有碰撞器。

参数:

  • direction:监测的方向。
  • hitInfo:监测到的碰撞器的信息。
  • maxDistance:最远监测范围。
  • queryTriggerInteraction:指定该监测是否应启用触发器。

 public RaycastHit[] SweepTestAll(Vector3 direction);

public RaycastHit[] SweepTestAll(Vector3 direction, float maxDistance); 

public RaycastHit[] SweepTestAll(Vector3 direction, [DefaultValue("Mathf.Infinity")] float maxDistance, [DefaultValue("QueryTriggerInteraction.UseGlobal")] QueryTriggerInteraction queryTriggerInteraction); 

 摘要:扫描监测。检测刚体的某方向上是否有碰撞器并获取所有监测到的碰撞器信息。

参数:

  • direction:监测的方向。
  • maxDistance:最远监测范围。
  • queryTriggerInteraction:指定该监测是否应启用触发器。

public void WakeUp(); 

摘要:唤醒刚体。

 

你可能感兴趣的:(Unity)