运动学 2D 刚体在碰撞过程中的行为与不可移动的对象一致(等于具有无限质量),且不具备与质量相关的属性。
| 属性 | 功能 |
|---|---|
| 身体类型 (Body Type) | 选择此选项以设置此 2D 刚体组件的运动行为和 2D 碰撞体交互。 |
| 动态 (Dynamic) | 选择此选项以将此 2D 刚体设置为动态身体类型,此类型专门为在模拟条件下移动而设计,并具有所有可用的 2D 刚体属性。2D 刚体的默认身体类型。 |
| 运动学 (Kinematic) | 选择此选项以将此 2D 刚体设置为运动学身体类型,此类型专为在模拟条件下移动而设计,但仅针对非常明确的用户控制。 |
| 静态 (Static) | 选择此选项以将此 2D 刚体设置为静态身体类型,此类型被设计为完全不在模拟条件下移动,其行为类似于具有无限质量的不可移动对象。详情请参阅身体类型:静态。 |
| 材质 (Material) | 为此 2D 刚体所附的所有 2D 碰撞体设置一个通用物理材质。注意:如果已被设置,则 2D 碰撞体会使用自己的材质属性。如果此处或 2D 碰撞体中未指定材质,则默认为 None (Physics Material 2D)。这时会使用 2D 物理 (Physics 2D) 窗口所设置的默认材质。 |
| 模拟 (Simulated) | 启用模拟以使 2D 刚体以及所有所附 2D 碰撞体和 2D 关节在运行时与物理模拟系统交互。如果禁用此功能,那么这些组件不会与模拟系统进行交互。详情请参阅下文的 2D 刚体属性:模拟。此属性默认启用。 |
| 完整运动学触点 (Full Kinematic Contact) | 如果要让 2D 刚体与所有其他 2D 身体类型的刚体碰撞,请启用此属性。注意:禁用此属性后,运动学 2D 刚体只会与动态2D 刚体碰撞。详情请参阅使用完整运动学触点。 |
| 碰撞检测 (Collision Detection) | 定义如何检测 2D 碰撞体之间的碰撞。 |
| 离散 (Discrete) | 选择此选项以允许具有 2D 刚体和 2D 碰撞体的__ GameObject__Unity 场景中的基础对象,可以表示角色、道具、风景、摄像机、路径点等。GameObject 的功能由所附的组件决定。更多信息 See in Glossary 在物理更新期间发生重叠或穿过彼此(如果移动得足够快)。仅会在新位置生成碰撞触点。 |
| 连续 (Continuous) | 选择此选项以确保具有 2D 刚体和 2D 碰撞体的 GameObject 在物理更新期间不会穿过彼此。相反,Unity 会计算 2D 碰撞体的第一个撞击点,并将 GameObject 移动到该点。注意:此选项会比离散选项耗费更多 CPU 时间。 |
| 睡眠模式 (Sleeping Mode) | 定义 GameObject 如何在处于静止状态时“睡眠”以节省处理器时间。 |
| 永不睡眠 (Never Sleep) | 选择此选项以禁用睡眠。重要信息:应尽可能避免此设置,否则会影响系统资源。 |
| 初始唤醒 (Start Awake) | 选择此选项以使 GameObject 在初始时处于唤醒状态。 |
| 初始睡眠 (Start Asleep) | 选择此选项以使 GameObject 在初始时处于睡眠状态,但可通过碰撞唤醒。 |
| 插值 (Interpolate) | 定义如何在物理更新间隔期间插入 GameObject 的移动。注意:适用于运动趋于颠簸状态的情况。 |
| 无 (None) | 选择此选项以不应用运动平滑。 |
| 插值 (Interpolate) | 选择此选项以根据 GameObject 在先前帧中的位置来平滑移动。 |
| 外推 (Extrapolate) | 选择此选项以根据 GameObject 在下一帧中的预计位置来平滑移动。 |
| 约束 (Constraints) | 定义对 2D 刚体运动的任何限制。 |
| 冻结位置 (Freeze Position) | 选择性停止 2D 刚体沿世界 X 和 Y 轴的移动。 |
| 冻结旋转 (Freeze Rotation) | 选择性停止 2D 刚体围绕世界 Z 轴的旋转. |
| 层覆盖 (Layer Overrides) | 展开层覆盖设置。 |
| 包含层 (Include Layers) | 在决定是否与另一个 2D 碰撞体发生碰撞时,选择所有此 2D 刚体所附的 2D 碰撞体 应包含的其他层。详情请参阅 Rigidbody2D-includeLayers。 |
| 排除层 (Exclude Layers) | 当决定是否与另一个 2D 碰撞体发生碰撞时,选择所有此 2D 刚体所附的 2D 碰撞体应排除的其他层。详情请参阅 Rigidbody2D-excludeLayers。 |
启用完整运动学触点 (Full Kinematic Contacts) 可使运动学 2D 刚体与所有身体类型的 2D 刚体发生碰撞。这与动态 2D 刚体的行为类似,只不过运动学 2D 刚体在接触另一个 2D 刚体时不会被物理系统移动。相反,它会表现出具有无限质量的不可移动对象的行为。
禁用此属性后,运动学 2D 刚体只会与动态 2D 刚体碰撞,而不会与其他身体类型碰撞。注意:触发器碰撞体是此规则的例外。这意味着任何碰撞脚本回调(OnCollisionEnter、OnCollisionStay、OnCollisionExit)都不会发生。
使用物理查询(例如 Physics.Raycast)来检测 2D 刚体应该移动的位置和方式时,以及需要多个运动学 2D 刚体相互交互时,这可能会造成不便。启用使用完整运动学触点 (Use Full Kinematic Contacts) 即可让运动学 2D 刚体组件以此方式交互。
注意:使用完整运动学触点 (Use Full Kinematic Contacts) 可以让您精确地控制运动学 2D 刚体的位置和旋转,同时仍然允许完整的碰撞回调。在需要精确控制所有 2D 刚体的情况下,使用运动学 2D 刚体来代替动态 2D 刚体,即可保留对完整碰撞回调的支持。