使用刚体组件可将刚体应用于游戏对象。刚体提供了一种基于物理的方法来控制游戏对象的移动和位置。您可以使用模拟物理力和扭矩来移动游戏对象,并让物理引擎计算结果,而不是变换属性。有关更多信息,请参阅刚体物理简介 (Introduction to Rigidbody Physics)。
要监控刚体的性能,请使用物理调试可视化 (Physics Debug Visualization) 工具。
| 属性 | 功能 |
|---|---|
| Mass | 游戏对象的质量(以千克为单位)。默认情况下,质量 (Mass) 设置为 1。与现实生活中一样,质量并不会影响物品在重力作用下的跌落速度。要模拟减缓移动速度的阻力,请使用阻力 (Drag)。 |
| Drag | 定义刚体的线速度的衰减率,以模拟阻力、空气阻力或摩擦力。较低的值会产生较慢的衰减率,使游戏对象在较长时间内移动得更快(这对于模拟现实世界中的重物很有用)。较高的值会产生更快的衰减率,使游戏对象在短时间内减速(这对于模拟现实世界中的轻物很有用)。 |
| Angular Drag | 定义刚体的旋转速度的衰减率,以模拟阻力、空气阻力或摩擦力。较低的值会产生较慢的衰减率,使游戏对象在较长时间内移动得更快(这对于模拟现实世界中的重物很有用)。较高的值会产生更快的衰减率,使游戏对象在短时间内减速(这对于模拟现实世界中的轻物很有用)。请注意,如果直接将游戏对象的 Angular Drag 属性设置为无穷大,无法使对象停止旋转。默认情况下,角阻力 (Angular Drag) 设置为 0.05。 |
| Automatic Center Of Mass | 启用自动质心 (Automatic Center Of Mass) 可根据刚体的形状和比例使用物理系统的预测质心。禁用此选项可自行设置质心的 X、Y 和 Z 坐标。 |
| Automatic Tensor | 启用自动张量 (Automatic Tensor) 可根据所有连接的碰撞体对刚体使用物理系统的预测张量和张量旋转。与质量一样,惯性张量定义了使刚体移动所需的力或扭矩;但是,虽然质量影响线性移动,但惯性张量影响旋转移动。禁用此选项可自行设置张量的替代 X、Y 和 Z 坐标(请参阅下面的属性)。 |
| - Inertia Tensor | 定义此刚体的惯性张量。惯性张量 (Inertia Tensor) 值越高,使刚体在其轴上旋转所需的扭矩就越大。 |
| - Inertia Tensor Rotation | 定义惯性张量的旋转。 |
| Use Gravity | 切换重力对刚体的影响。如果启用此属性,物理系统会施加力使游戏对象在模拟重力的方向上移动(默认情况下,沿 y 轴移动)。使用重力 (Use Gravity) 默认启用。 |
| Is Kinematic | 在游戏对象的基于物理的运动和运动学运动之间切换。启用是否运动学 (Is Kinematic) 后,物理系统无法施加力来移动或旋转游戏对象,相反,Unity 只能通过其变换 (Transform) 移动和旋转游戏对象。请参阅刚体物理简介:不带物理运动的刚体 (Introduction to Rigidbody physics:Rigidbody without physics-based movement) 以了解详细信息。是否运动学 (Is Kinematic) 默认禁用。 |
| Interpolate | 刚体上的插入 (Interpolate) 设置提供了两个选项,使刚体的运动外观平滑化(如果其在运行时出现抖动)。选项包括插入 (Interpolate) 和外推 (Extrapolate)。 插入和外推都会在物理更新之间计算刚体的姿势(即位置和旋转)。应该选择哪个选项取决于哪个选项能够为您的用例带来最佳视觉效果。 有关插入 (Interpolate) 属性的详细信息,请参阅将插入应用于刚体 (Apply interpolation to a Rigidbody)。 |
| - None | 不应用插入或外推。这是默认选项。 |
| - Interpolate | 使用前两次物理更新中的刚体的姿势和速度,计算和应用刚体在当前帧中的姿势。 插入比外推更准确,但有一个物理更新的时滞。其通常最适合精度很重要的情况;例如,如果刚体的速度发生变化,或者如果还有其他物理元素影响刚体的运动。 |
| - Extrapolate | 使用上一个物理更新中的刚体的姿势和速度,并在下一个物理更新中预测刚体的姿势,来计算和预测当前帧中的姿势。 外推会使刚体看起来比它应该移动的位置略微提前,并且可能略微不准确。其通常最适合精度不重要的情况;例如,如果刚体以恒定速度移动,并且没有其他物理元素影响刚体的移动。 |
| Collision Detection | 定义物理系统如何检测此刚体的碰撞体与场景中其他碰撞体之间的碰撞。Unity 为每对碰撞体生成一个碰撞,并根据此碰撞检测 (Collision Detection) 属性确定碰撞检测方法。 默认情况下,碰撞检测 (Collision Detection) 设置为离散 (Discrete)。有关每种碰撞检测类型的更多信息,请参阅连续碰撞检测 (Continuous collision detection)。 |
| - Discrete | 物理系统使用离散碰撞检测来计算此刚体碰撞体的碰撞。如果此刚体未参与任何快速移动的碰撞,请选择离散 (Discrete)。离散 (Discrete) 碰撞检测的计算量并不大。 |
| - Continuous | 物理系统使用基于扫掠的 CCD 来计算此刚体的碰撞体与任何静态碰撞体(即没有关联刚体的碰撞体)之间的碰撞。如果此刚体与静态碰撞体发生快速移动碰撞,请选择连续 (Continuous)。与离散 (Discrete) 或连续推测 (Continuous Speculative) 相比,基于扫掠的 CCD 的计算量更大。 |
| - Continuous Dynamic | 物理系统使用基于扫掠的 CCD 来计算此刚体的碰撞体与所有其他碰撞体之间的碰撞(设置为离散 (Discrete) 碰撞检测的碰撞体除外)。如果此刚体与任何碰撞体发生快速移动碰撞,请选择连续动力学 (Continuous Dynamic)。与离散 (Discrete) 或连续推测 (Continuous Speculative) 相比,基于扫掠的 CCD 的计算量更大。 |
| - Continuous Speculative | 物理系统使用推测性连续碰撞检测来计算此刚体的碰撞体与所有其他碰撞体之间的碰撞。如果碰撞精度对此刚体不重要,请选择连续推测 (Continuous Speculative)。推测性碰撞检测的计算强度高于离散 (Discrete)检测,但计算强度低于连续 (Continuous) 或连续动力学 (Continuous Dynamic) 检测。 |
| Constraints | 对刚体的运动施加限制。 |
| - Freeze Position | 有选择地停止刚体沿世界 X、Y 和 Z 轴的移动。 |
| - Freeze Rotation | 有选择地停止刚体围绕局部 X、Y 和 Z 轴旋转。 |
层重载 (Layer Overrides) 部分提供的属性允许您覆盖项目范围内附加到此刚体的所有碰撞体的层碰撞检测设置。
| 属性 | 描述 |
|---|---|
| Layer Override Priority | 定义附加到此刚体的碰撞体的碰撞体重载优先级。当碰撞体的重载相互冲突时,Unity 会使用具有较高值优先级的碰撞体的设置。 例如,如果层重载优先级 (Layer Override Priority) 为 1 的碰撞体与层重载优先级 (Layer Override Priority) 为 2 的碰撞体发生碰撞,物理系统将使用层重载优先级 (Layer Override Priority) 为 2 的碰撞体的设置。 |
| Include Layers | 选择要在与附加到此刚体的碰撞体碰撞中包含的层。 |
| Exclude Layers | 选择要在与附加到此刚体的碰撞体碰撞中排除的层。 |
刚体