ヒンジジョイント(Hingi Joint)を使用して、オブジェクトを振り子のように動かすしくみを作ってみましょう。
上のCubeを移動させると、下のSphereが振り子のような動きで追従します。
関連記事:
紐をつけてブラブラをくり返す
Fixed Jointを解除してオブジェクトを落とす
スプリングを使って棒を振るような動き
HingeJointを使ってドアを作成
触れたら引っ付くオブジェクト
Cube(プレーヤー)の作成
CubeとSphereを作成します。
CubeのY座標を4に変更し、少し上の方に配置します。
Cubeにリジッドボディを追加し、「重力を使用」のチェックを外します。
Cubeは支点となりますので、質量を大きくしておきましょう。
ここでは質量100に設定し、回転位置を固定にチェックを入れます。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3; transform.position = new Vector3 ( transform.position.x + dx, 4, transform.position.z + dz ); } } |
Cubeが十字キーで操作できるようになります。
ヒンジジョイントを追加する
続いて、Sphereの設定を行いましょう。
Sphereにリジッドボディを追加します。
ヒンジジョイントを追加します。
コンポーネントを追加 > 物理 > ヒンジジョイント
Connected Bodyのフィールドで、Cubeを選択します。
追従する対象が、Cubeに設定されました。
次は、ヒンジジョイントの設定を行います。
AnchorのY座標を、適当に動かしてみましょう。
シーンビューを見てみると、アンカーの目印が現れます。
アンカーは、振り子の支点になります。
今回は、Cubeを支点にしたいので、Yを3.5にしました。
触れる方向は前後左右にしたいので、軸のXとZをそれぞれ1にしました。
ゲームプレイして、Cubeを動かしてみましょう。
Cubeにつられて、Sphereが振り子のように動きます。
注意点は、支点となるオブジェクトを固定するか、質量を上げるところ。
ヒンジジョイントが暴れたり、ばたついたりして、動きがおかしくなりますので、接続先オブジェクトの質量には気をつけましょう。
関連記事:
紐をつけてブラブラをくり返す
Fixed Jointを解除してオブジェクトを落とす
スプリングを使って棒を振るような動き
HingeJointを使ってドアを作成
触れたら引っ付くオブジェクト