Rigidbody 属性
- collisionDetectionMode
- 功能:设置刚体的碰撞检测模式。
- 可选值:
Discrete
:默认的碰撞检测模式,可能在快速移动的物体间产生穿透现象。Continuous
:适用于高速运动的物体,可以减少穿透现象,检测比Discrete更精确。ContinuousDynamic
:提供最精确的碰撞检测,适用于两个高速运动的物体,但计算消耗最大。
- drag
- 功能:模拟物体在介质中移动时的阻力。
- 数值范围:通常为非负值。
- inertiaTensor
- 功能:定义刚体在三个轴向的转动惯量。
- 形式:一个3x3的矩阵,影响刚体旋转时的动量改变。
- mass
- 功能:定义刚体的质量。
- 影响:质量越大,对力的响应越小,即加速度越小。
- velocity
- 功能:获取或设置刚体的线性速度。
- 形式:一个三维向量,表示刚体在三个方向上的速度分量。
- angularVelocity
- 功能:获取或设置刚体的角速度。
- 形式:一个三维向量,描述刚体绕各轴的旋转速度。
- useGravity
- 功能:确定刚体是否受重力影响。
- 类型:布尔值(true/false)。
- isKinematic
- 功能:设置刚体是否为运动学刚体,即由脚本或动画直接控制其运动,而非物理模拟。
- 类型:布尔值(true/false)。
- constraints
- 功能:对刚体的移动和旋转自由度进行约束。
- 可选约束:Freeze Position(X, Y, Z)和Freeze Rotation(X, Y, Z)可以分别约束刚体在特定轴向上的移动和旋转。
- centerOfMass
- 功能:获取或设置刚体的质心位置。
- 影响:质心位置影响刚体的旋转行为。
- worldCenterOfMass
- 功能:获取刚体在世界空间中的质心位置。
Rigidbody 方法
- AddForce
- 功能:在刚体的中心或指定点上施加一个力。
- 参数:力的方向和大小,力的施加模式(如ForceMode.Impulse为瞬时力,ForceMode.VelocityChange为速度改变)。
- AddTorque
- 功能:对刚体施加一个扭矩,使其旋转。
- 参数:扭矩的方向和大小,施加模式类似AddForce。
- MovePosition
- 功能:将刚体移动到指定位置,同时保留其速度。
- 参数:新的位置坐标。
- MoveRotation
- 功能:将刚体旋转到指定的旋转状态。
- 参数:新的旋转状态(Quaternion)。
- Sleep
- 功能:使刚体进入休眠状态,暂停物理模拟以节省性能。
- WakeUp
- 功能:唤醒休眠的刚体,恢复其物理模拟。
- SweepTest 和 SweepTestAll
- 功能:对刚体进行扫描测试,检测在给定的方向和距离内是否与其他碰撞体相交。
- 返回:相交信息和碰撞点数据。
- ForceMode.Force:
- 描述:这是最常用的模式之一。它施加一个持续的力到物体上,这个力会持续作用,直到其他力或阻力改变物体的状态。
- 举例:如果设定一个大小为10的力作用在质量为2的刚体上,每帧(假设FixedUpdate的执行频率为0.02s)刚体在受力方向(如X轴)上将增加0.1米的位移,因此每秒的移动速度为5m/s。
- ForceMode.Acceleration:
- 描述:该模式施加一个持续的加速度到物体上。与Force模式不同,它不考虑物体的质量,而是直接改变物体的速度。
- 举例:在同样的力和时间间隔下,无论刚体的质量如何,每帧刚体在受力方向上都会增加0.2米的位移,导致每秒的移动速度为10m/s。
- ForceMode.Impulse:
- 描述:此模式施加一个瞬时的冲量到物体上。冲量是力与时间的乘积,它会立即改变物体的速度。
- 举例:一个大小为10的冲量作用在质量为2的刚体上,会立即导致刚体在受力方向上增加5m/s的速度。由于是瞬时作用,所以不考虑时间间隔,刚体每秒的速度会非常高,如250m/s。
- ForceMode.VelocityChange:
- 描述:该模式施加一个瞬时的速度变化到物体上。与Impulse模式类似,它会立即改变物体的速度,但也不考虑物体的质量等因素。
- 举例:一个大小为10的速度变化会直接使刚体在受力方向上获得10m/s的速度增量,由于是瞬时变化,且不考虑质量,刚体每秒的速度可以达到非常高,如500m/s。