制約とは規則で、ジョイントは、これが恒久的に破られないように努めます。制約にはさまざまな種類があり、すべてのジョイントは少なくとも 1 つの制約を提供します。この制約は、Rigidbody 2D に適用されてその動作を制御します。制約の中には動作を制限するものがあります (例えば、Rigidbody が特定の線上あるいは特定の位置に留まるようにするものなど)。また一部の制約は ‘駆動的’ で、Rigidbody ゲームオブジェクトが特定の動作をするようにアクティブな作用を及ぼします (例えば、ゲームオブジェクトに一定のスピードを維持させるなど)。
Unity の物理演算システムは、オブジェクトが設定された距離の制約よりも遠くに移動したり、設定されたスピードの制約よりも速く移動したりするときに、一時的に制約が破られる可能性があると想定しています。制約が破られていない場合、ジョイントは力を適用しません。制約が破られると、ジョイントは制約を修正する力を適用します。
例えば ‘駆動的な’制約がある場合、ジョイントは、その制約によって設定された距離やスピードを保つために力を適用します。通常はこの力の適用は素早く実行されますが、制約は必ずしも瞬時に修正されるわけではなく、時間と共に徐々に修正されます。そのため、ジョイントが伸びたように見えたり不安定に見えたりすることがあります。そのようなぐずつきが発生するのは、物理演算システムが制約を守るためにジョイントの力を適用しようとしている一方で、その制約を破ろうとする他の物理力が同時に働き続けているためです。このようにゲームオブジェクトに相反する力が働いているのに加え、一部のジョイントは他のジョイントより安定しているため他より素早く反応します。
ジョイントにどんな制約が使われようと、ジョイントは制約を修正するのに、力しか使えません。力は、線状 (直線的) か角度 (トルク) どちらかです。
ノート: ジョイントがアタッチされている Rigidbody オブジェクト (特に質量の大きいオブジェクト) に大きな力を加える時は、相反する力がジョイントに対して働くことを踏まえて、慎重に行うことをお勧めします。
すべてのジョイントは、それ自体の制約の範囲内に留まるように、適用する直線力やトルクを監視することができます。直線力とトルクの両方を監視するジョイントもあれば、直線力だけを監視するジョイントもあります。これにより、ジョイントが制約を維持しようとする中で特定の直線力やトルクを超えた場合に通知が行われます。このしきい値は Joint2D.breakForce および Joint2D.breakTorque として指定できます。ジョイントがこのしきい値を超えた場合、これはジョイント破壊と呼ばれます。
ジョイントが破壊された時に実行するアクションは Joint2D.breakAction で指定できます。デフォルトの破壊アクションは、Joint2D コンポーネントを破壊することです。他の使用可能なすでに用意されたアクションについては、JointBreakAction2D を参照してください。