运动学物理体类型定义了2D Rigidbody的固定行为。可以是动态的(物体在模拟下移动并受到如重力等力的作用),运动学的(物体在模拟下移动,但是不受重力等力的作用)或者静态的(物体在模拟下不移动)。 更多信息
在术语表中查看 Rigidbody一个组件,使GameObject能受到模拟gravity和其他力的作用。 更多信息
在术语表中查看 2D是为了在模拟下移动而设计的,但是只能通过非常明确用户控制。当动态 Rigidbody 2D会受到重力和其他力的作用时,运动学Rigidbody 2D则不会受到影响。正因为如此,运动学Rigidbody 2D对系统资源的需求低于动态Rigidbody 2D,允许它更快地进行模拟。
要重新定位运动学Rigidbody 2D,必须通过Rigidbody2D.MovePosition或Rigidbody2D.MoveRotation显式地进行定位。使用物理查询来检测碰撞当物理引擎检测到两个GameObject的碰撞器接触或重叠时(至少有一个具有Rigidbody组件且正在运动时)发生碰撞。 更多信息
在术语表中查看和脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性并以任何您喜欢的样式响应用户输入。 更多信息
在术语表中查看以决定Rigidbody 2D应该在哪里以及如何移动。
运动学Rigidbody 2D仍然可以通过其速度移动,但速度不会受到力或重力的影响。运动学Rigidbody 2D不会与其他运动学Rigidbody 2D或静态Rigidbody 2D碰撞,而只会与动态Rigidbody 2D碰撞。在碰撞过程中,运动学Rigidbody 2D表现得像一个不可移动的物体(仿佛它有无限质量),并且与这个物体类型相关的质量属性将是不可用的。
属性 | 功能 | |
---|---|---|
物理体类型 | 选择以设置运动行为和Rigidbody 2D组件设置与2D之间的碰撞器交互。 | |
动态 | 选择将此Rigidbody 2D设置为动态物理体类型,它设计为在模拟下移动并提供所有Rigidbody 2D属性。这是Rigidbody 2D的默认物理体类型。 | |
运动学 | 选择此选项以将此Rigidbody 2D设置为运动学体类型,该类型专为在模拟期间移动,但仅在非常明确的用户控制下设计。 | |
静态 | 选择此选项以将Rigidbody 2D设置为静态体类型,该类型在设计上完全不在模拟期间移动,表现为无法移动的无限质量物体。有关更多信息,请参阅体类型:静态。 | |
材质 | 为所有附加到此Rigidbody 2D的Collider 2D设置一个通用的物理材质。注意:如果Collider 2D已设置自己的材质属性,它将使用自己的Material属性。如果没有在此处或Collider 2D中指定材质,则默认选项为无(物理材质2D)。此选项使用在物理2D窗口中可以设置的默认材质。 | |
模拟 | 启用此选项,以使Rigidbody 2D和任何附加的Collider 2D和2D关节在运行时与物理模拟进行交互。如果此选项被禁用,则这些组件不与模拟交互。有关更多信息,请参阅下面的Rigidbody 2D属性:模拟。此属性默认启用。 | |
完全运动学接触 | 如果希望Rigidbody 2D能够与其他所有Rigidbody 2D体类型相碰撞,请启用此属性。注意:当此属性被禁用时,运动学Rigidbody 2D仅与动态Rigidbody 2D碰撞。有关更多详细信息,请参阅使用完全运动学接触。 | |
碰撞检测Unity执行的一种自动进程,用于确定带有Rigidbody和碰撞组件的移动GameObject是否与任何其他碰撞器接触。 更多信息 见术语表 |
定义Collider 2D之间的碰撞是如何被检测的。 | |
离散 | 选择此选项,如果在物理更新期间物体移动速度足够快,允许GameObject与Rigidbody 2D和Collider 2D重叠或通过彼此。碰撞接触仅在新的位置生成。 | |
连续 | 选择此选项,以确保具有Rigidbody 2D和Collider 2D的GameObject在物理更新期间不会通过彼此。相反,Unity计算Collider 2D的任何首次接触点,并将GameObject移动到该点。注意:此选项比离散选项消耗更多的CPU时间。 | |
睡眠模式 | 定义GameObject如何在静止时“睡眠”以节省处理器时间。 | |
永不睡眠 | 选择此选项,可以使用睡觉功能关闭。 重要:在可能的情况下应避免此操作,因为它可能影响系统资源。 | |
启动唤醒 | 选择此选项,以使GameObject最初处于唤醒状态。 | |
启动睡眠 | 选择此选项,以使GameObject最初处于睡眠状态,但可以通过碰撞唤醒。 | |
插值 | 定义GameObject在物理更新之间的运动是如何插值的。 提示:当运动倾向于断断续续时,这很有用。 | |
无 | 选择此选项,不应用移动平滑。 | |
插值 | 选择此选项,根据GameObject在先前帧中的位置平滑移动。 | |
外推 | 选择此选项,根据对下一个帧位置估计的平滑移动。 | |
约束 | 定义对2D刚体运动的任何限制。 | |
冻结位置 | 选择性地阻止2D刚体在X和Y世界轴上移动。 | |
冻结旋转 | 选择性地阻止2D刚体在Z世界轴周围旋转。 | |
层覆盖 | 展开以查看层覆盖设置。 | |
包含层级 | 选择应包含在此2D刚体附加的所有Collider 2D中的额外层级,以确定是否应发生与另一个Collider 2D的碰撞。有关更多信息,请参阅Rigidbody2D-includeLayers。 | |
排除层级 | 选择应从与此2D刚体附加的所有Collider 2D中排除的额外层级,以确定是否应发生与另一个Collider 2D的碰撞。有关更多信息,请参阅Rigidbody2D-excludeLayers。 |
启用全运动学接触允许运动学2D刚体与所有2D刚体身体类型发生碰撞。这与动态2D刚体的行为相似,但运动学2D刚体在接触另一个刚体时不会被物理系统移动。相反,它像一个无限质量的不可移动物体。
当此属性禁用时,运动学2D刚体只会与动态2D刚体发生碰撞,而不会与其他身体类型发生碰撞。**注意**:触发碰撞体是这个规则的例外。这意味着不会发生任何碰撞脚本回调(OnCollisionEnter、OnCollisionStay、OnCollisionExit)。
在您使用物理查询(如Physics.Raycast以检测2D刚体应如何移动以及何时需要多个运动学2D刚体相互交互时,这可能不方便。启用使用全运动学接触以使运动学2D刚体组件以这种方式交互。
**提示**:使用全运动学接触允许显式控制运动学2D刚体的位置和旋转,但仍然允许完整的碰撞回调。在需要显式控制所有刚体的设置中,使用运动学2D刚体而不是动态2D刚体,以仍然具有完整的碰撞回调支持。