LoginSignup
13
6

More than 5 years have passed since last update.

Hinge Jointでシーソーを作る

Posted at

はじめに

シーソーのように、二つのオブジェクトがある軸によって接合されている場合は、Hinge Jointを使うことができます。ここでは、初心者向けに使い方を説明します。

オブジェクトの配置

二つのCubeを用意します。一つ目のキューブCubeはTransformのPosition = (0,0,0)、Scale = (0,2,0)にしてください。二つ目のキューブ(Cube2と名称変更)はTransformのPosition = (0,1,0)、Scale = (4,1,0.5)にしてください。以下の写真のような配置になるはずです。

image

どちらにもRigidbodyを設定します。Cubeは動かないので、ConstraintsのFreeze Position, Freeze Rotationすべてにチェックを入れて下さい。

image

Hinge Jointの設定

Cubeの方にHinge Jointコンポーネントを設定します。すると写真のように、小さい茶色のAnchorがCubeの上の面に作られます。

image

Hinge Jointは、このAnchorを軸にして回転します。この方向だと、意図する回転軸(z軸方向)にならないので、Axisの設定を変えます。z軸方向にするには、 (x,y,z) = (0,0,1)にします。そうすると、Anchorの軸が回転してz軸方向を向くようになります。

image

次に、Cubeにつながるものの設定をします。Cube2がつながるものなので、それをHinge JointコンポーネントのConnected Bodyに設定します。

image

これでPlayすると、何も起きません。なぜなら、Cube2が軸の左右でバランスが取れているからです。ちょっとCube2をずらしましょう。Positionをx=0.5にして、もう一度実行しましょう。

GifAnim.gif

設定した通り回転していることが分かります。ただし、動きに制限を加えていないので、そのままぐるっとも回ってしまいます。

動きに制限をつける。

Springを設定する

シーソーが回転し過ぎないようにするには、Use Springをオンにして、回転ばねを設定するのが一つの方法です。

image

Springはばねの強さ、Damperは回転速度を決めます。大きいほど回転が遅くなります。Target positionは、初期状態の角度をゼロとして、そこから何度回転できるかを決めます。ただし、Springの値が小さいとばねが十分働かず、Target positionの角度で止まりません。

たとえば、上の設定だと、以下のようになります

GifAnim2.gif

このときのCube2のTransformは以下の通りです。

image

Rotation z = -10, ということで、Z軸を中心に10度回転していることが確認できます。

さらに、Damperを1000にすると

GifAnim3.gif

ゆっくりまわっていることが分かります。

Limitsを設定する。

もう一つは、回転角度をLimitsで制限する方法です。Use Limitsをオンにして、min, maxを設定して最小、最大の回転角度を設定します。たとえば、min=0, max=20とすると、

GifAnim4.gif

ダンパーがないので、ガタッという感じで動きます。

SpringとLimitsの違い

Springはばねなので、押されると反発しますが、Limitsでは、そのようなことはありません。

GifAnim5.gif

こちらでは、向かって奥はSpring, 手前はLimitを使ってます。Springの方では玉が跳ねているのに、Limitではただ跳ね返っているだけなのがわかるでしょう。期待している特性に合わせて、使い分けてください。

13
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6