3
5

More than 5 years have passed since last update.

UnityのSpring Jointを使う 2

Last updated at Posted at 2016-09-15

はじめに

UnityのSpring Jointを使う の続きです。

上からばねにモノを落とす。

準備

玉(sphere)を上から落とします。Transform, Rigidbodyを以下のように設定してください。

キャプチャ.PNG

上のCubeはMassを1にします。

キャプチャ2.PNG

下のCube(1)はSpring JointコンポーネントのMin, Max Distanceおのおの4にしてみましょう。Springは大判振る舞いで100000。

キャプチャ3.PNG

落とす

実行すると、最初はCubeは動かないはずです(Min Distanceが4だから)。そのあと、玉が落ちてきて下がり、また上がります。グラフにすると以下の通りです。グラフ作成にはMonitor Componentsアセットを使いました。

キャプチャ4.PNG

Cubeはいったん約0.75下がりますが、すぐに元の長さに戻っています。これは、元の長さがMax Distanceに等しいからです。玉はバウンドし、Y = 4.15まで上がります。

次に、Min Distanceが3にし、下のCube(1)の位置を1上げて-4にします(こうしないと、実行開始時にCubeがmin distanceの長さに移動してしまう)。それで実験すると、Cubeは先ほど同じく約0.75下がりますが、そのあと大きく伸びて、初期位置から約1上(Max Distanceに相当)に上がります。つまり、振れ幅は約1.75になるわけです。玉のバウンドの仕方は変わりません。

キャプチャ5.PNG

さらに、Min Distanceが2にし、下のCube(1)の位置を1上げて-3にしたらどうなるでしょうか。もう予想がつきますね。Cubeは先ほど同じく約0.75下がりますが、そのあと大きく伸びて、初期位置から約2上(Max Distanceに相当)に上がります。つまり、振れ幅は約2.75です。玉のバウンドの仕方はやはり変わりません。

キャプチャ7.PNG

まとめ

最後に、上の3条件を同時に。左からmin distance 4, 3, 2です。max distanceは4で固定です。

QiitSpringJoint2.gif

このように、Max distanceが固定の場合、min distanceが小さいほど、力が加わった時、最初の縮みは同じでも、縮んでから戻る際の振れ幅の大きいバネになります(力が加わった時の最初の縮みはSpringの値で決まる)。しかし、それによって球を持ちあげる距離に差はありません。

3
5
0

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
3
5