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)