LoginSignup
5
2

More than 5 years have passed since last update.

【Unity(C#)】物理特性を与えながら固定する方法

Last updated at Posted at 2019-01-25

  
  
  
この記事は

『プログラミング完全未経験からUnityでの開発現場に迎え入れてもらえた世界一の幸せ者』

の記事です。そのつもりでお読みください。

物理特性を与えながら固定する

かみ砕いて言うと(?)下の絵のような状態の再現です。
10012.png

要はモノを吊り上げたいときに使えます。

吊り上がっていく最中に揺れたり、少し回転したりするのが実際の物理挙動だと思います。
それは、重力が働いているからこそです。

しかし、クレーンで吊り上げる荷物にRigidbodyをつけてUse Gravityをtrueにし、ポジションをどんどん高い位置に更新したとしても、ポジションの更新が終われば落下してしまいますし、ポジションを更新している間も物体は落ちようと頑張るので気持ち悪い挙動になります。

そこでHingeJointというComponentを使います。

HingeJoint

まず、HingeJointをAdd Componentするためのゲームオブジェクトを
吊り上げたいモノとは別で用意しましょう。
そして、Inspectorをこのような感じ↓で設定します。
HingeJointInspector.png
具体的な設定の変更点は
①Rigidbody(勝手にAddされます)のIs Kinematicをtrueにする
②Connected Bodyに吊り上げたい荷物※のRigidBodyをぶち込む
③AxisをX,Y,Z = (1,0,1)に変更
※吊り上げたい荷物のRigidbodyはUse Gravityをtrueにしてください。

設定は以上です。

実際に動かしたものがこんな感じになります。

GifCapture-201901251137053090.gif

落下させたいときは、
HingeJoint型の変数.connectedBody = null;
としてやればジョイントから外れて落下します。

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