顾名思义,关节用于将游戏对象连接在一起。只能将 2D 关节附加到游戏对象(已附加 2D 刚体组件)或者附加到世界空间中的固定位置。
所有 2D 关节的名称都以“2D”结尾。名称不以“2D”结尾的关节是 3D 关节。2D 关节用于 2D 游戏对象,而 3D 关节用于 3D 游戏对象。
(请参阅以下的详情和提示以了解所有 2D 关节的有用背景信息。)
2D 关节包括不同类型。请参阅每个关节参考页面以了解有关各自属性的详细信息:
2D 距离关节 (Distance Joint 2D) - 连接由刚体物理组件控制的两个游戏对象,使这两个对象保持一定距离。
2D 固定关节 (Fixed Joint 2D) - 将两个对象保持在相对于彼此的位置,确保对象始终以给定位置和角度偏移。例如,对象好像是采用刚性连接方式相连一样:对象不能彼此远离,不能相互靠近,也不能相对于彼此旋转。还可以使用此关节来创建刚度稍低的柔性连接。
2D 摩擦关节 (Friction Joint 2D) - 将刚体物理组件控制的两个游戏对象之间的线速度和角速度降低到零(即:此关节使对象减速并停止)。例如,一个平台在旋转但抵抗该运动。
2D 铰链关节 (Hinge Joint 2D) - 允许由刚体物理组件控制的游戏对象连接到空间中的一个点,使游戏对象可围绕该点旋转。例如,一把剪刀上的轴心。
2D 相对关节 (Relative Joint 2D) - 允许由刚体物理组件控制的两个游戏对象基于彼此的位置来保持相对位置。使用此关节可将两个对象保持相互偏移。例如,在空间射击游戏中,玩家身后有额外的排炮。
2D 滑动关节 (Slider Joint 2D) - 允许由刚体物理组件控制的游戏对象沿着空间中的一条线滑动(例如滑门)。
2D 弹簧关节 (Spring Joint 2D) - 允许由刚体物理组件控制的两个游戏对象就像通过弹簧连接在一起一样。
2D 目标关节 (Target Joint 2D) - 连接到指定目标,而不是像其他关节那样连接到另一个刚体对象。这是一种弹簧式关节,例如可将其用于拾取和移动处于重力作用下的对象。
2D 车轮关节 (Wheel Joint 2D) - 模拟车轮和悬架。
所有关节都提供适用于 2D 刚体行为的一个或多个约束。一个约束是一条“规则”,关节将尝试确保不会永久打破规则。约束的类型有多种,但通常关节只提供其中一些约束,有时只提供一个约束。有些约束会限制行为,例如确保刚体保持在一条线上或在特定位置中。有些是“驱动性”约束,例如用于旋转或移动刚体对象的电机会试图保持一定速度。
物理系统会期望暂时打破约束,对象移动的距离可能超过约束规定的距离,或者对象的移动速度可能超过其电机速度约束。未打破约束时,关节不施加任何作用力,而且不做功。只有打破约束时,关节才施加作用力来修复约束:因此,对于上文提到的“驱动性”约束,关节将保持距离或确保电机速度。然而,该力并不总是立即修复约束。虽然此修复通常进行得很快,但是也要在一段时间内进行。
此时间延迟会导致关节“拉伸”或看起来“很软”。发生延迟是因为物理系统试图施加关节作用力来修复约束,而同时其他游戏物理作用力正在发挥作用来打破约束。除了作用于游戏对象的冲突力之外,一些关节比其他关节更稳定并且反应更快。
无论关节提供什么约束,关节仅使用作用力来修复约束。这些力为线性(直线)力或角力(扭力)。
提示:考虑到作用在关节上的冲突力,在对已附加关节的刚体对象施加大力时始终要谨慎,特别是那些质量大的对象。
作用力超过指定限值时,所有关节都能够完全停止工作(即破坏)。由于线性力过大而导致破坏的限值称为“破坏力”。由于扭力过大而导致破坏的限值称为“破坏扭矩”。
这些限值预先设置为 Infinity:这意味着没有限制。
超过 Break Force或 Break Torque 限值时,关节会破坏且该组件将从游戏对象中自我删除。