Unity における基本的なジョイント（Joint）をみて行きます。
このサンプルでは Fixed Joint および
Spring Joint があります。
このサンプルでは 鉄球 (wrecking ball) を
構成してます。
最初は Fixed Joint をみていきます。Fixed Joint は
階層の中で
親子関係を作成するのに似ています。
ジョイントによりゲームオブジェクトを
ワールド空間座標の点または
接続された Rigidbody に対してロックします。
このサンプルでは chain の最初の capsule を
天井の側に配置して
Fixed Joint をアタッチしています。
これによりその場所にロックされます。
この Fixed Joint の他のパラメータは
Break Force および Break Torque です。
これは ジョイントを壊すために
必要な最小の力を表します。
ジョイントが破壊されたときゲームオブジェクトは
再び自由に移動出来るようになります。
chain の他の capsule は
Spring Joint があります。Spring Joint は
ゲームオブジェクトがターゲット位置に到達しようとするという
原理にもとづいています。
到達しようとするターゲット位置は
シーンビューでセットされた位置であり、
そこにアタッチされたすべての Rigidbody は
特定のアンカー位置 (anchor point) にアタッチされた
透明の Spring により
引っ張られていきます。
もし Spring Joint に接続された Rigidbody がある場合
Spring が到達しようとするターゲット地点は
ワールド空間に対してではなく
ゲームオブジェクトに対する相対的な位置です。
例えば、ここで二つめの capsule は
capsule 1 に到達しようとしていて、capsule 3 は
capsule 2 に到達しようとしています。
これらが動くにつれて、もはや元の位置に
向かうことはなく、むしろ
それらの capsule がある位置に
向かっていきます。
anchor とは joint のピボット地点です。
ゲームオブジェクトに spring をアタッチした
場所としてとらえるべきです。
これはシーンビュー上で
オレンジ色の点線またはボックスとして表示されます。
spring パラメータは spring 強度に関する
指標です。値が大きいほど
spring がきつくなったり、強くなったり
します。damper パラメータにより
joint が移動するときにどれぐらい
減速するかを決定します。数字が大きいほど
spring は跳ねすぎるようになります。
min および max distance は
spring が有効でない領域を決めるために
あります。これらは 要するに Spring の
長さを制限します。
Fixed Joint と同様に Spring にも
Break Force および Break Torque があり、
特定の数値 にセットすることで
Joint を壊すために必要な最小の力を
決められます。
最後に、 Hinge Joint です。
Hinge Joint は ドアなどに理想的であり
Spring Joint といくつかのプロパティを
共有します。 Hinge の Axis は
これが回転する軸となるものです。
このサンプルでは physicsDoor は
Hinge Joint がアタッチされています。Anchor は
X 軸で 1 にセットされていて、
この中心から端に移動させます。
再び Joint は Unityの中でオレンジ色で
表現されていて、Hinge が現在ある場所を示す小さな線を
確認することが出来ます。
Axis によって、
どの軸を Hinge がピボットするか指定できます。
これを Y 軸にすることでシンプルなスクリプトにより
現実世界のちょうつがいのようの動作するようにしています。
ドアに対して Force を適用することで
クリックしたとき、 Z 軸の方向に
押すことが出来て、
負の方向の transform.forward をショートカットとして使用します。
Add Force レッスンにより、
ドアをフレームから外にふきとばすところをみました。
しかし、今回は Hinge があることにより
ドアに Force を適用するとき
その地点を中心にピボットするようになります。
そして何回 Force を加えようとも
壊れることがありません。
Spring Joint と同様にして
Spring のような特性を適用するためには
Spring チェックボックスを使用して
さらに Spring 設定の下にある値を使用します。
Hinge Joint および Spring Joint の他の違いは
Motor および Limit です。
Motor は Joint に Velocity をつけるための
ものであり、例をあげると回転ドアになります。
Target Velocity は Joint が回転しようとする
Velocity であり、
Force を使用してその Velocity に到達しようとします。
もし Free Spin 画チェックされた場合 Force は
Joint を加速しようとするためのみに使用されて
減速されるためには使用されません。
Limit を使用して Joint の動作を制限することが必要な場合に
使用することが出来て、例えば普通のドア
みたいなものです。 Minimum および Maximum は
Joint が移動できる角度です。
Min および Max Bounce は Joint が
どれかの Limit に到達したときに
の跳ねる (Bounce) ことが出来る量です。
Spring Joint と同様に、
Break Force および Torque があります。
例えば、Break Force プロパティに
適切な低い値を設定すると、
Force を加えた時にドアをちょうつがいから
外れるようにすることが出来ます。
これをするとき、ドアが後ろ方向に直接はじけとぶのではなく、
ちょうつがいから引っ張られて外れるようになることに注意すべきです。 (翻訳:gamesonytablet)