Fixed Joint(固定ジョイント)をオフにして、オブジェクト同士の繋がりを解除します。
上部のCube(プレーヤー)は十字キーで移動し、スペースキーを押せばジョイント解除。
Sphereが落下します。
関連記事:
Hingi Jointを使った振り子の動き
範囲内に入ればオブジェクトを落下させる
他のオブジェクトに接近すれば繋がる
特定エリアに近づくと追いかけてくる
一定距離から外れたら実行する
Cube(プレーヤー)の作成
CubeとSphereを作成します。
CubeのY座標を2に変更し、少し上の方に配置します。
Cubeにリジッドボディを追加し、「重力を使用」のチェックを外します。
ジョイントされる側のCubeは、質量を増やしておきます。
ここでは質量10に設定し、回転を固定にチェックを入れました。
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, 2, transform.position.z + dz ); } } |
Cubeが十字キーで操作できるようになります。
固定ジョイントのオンとオフ
Sphereに固定ジョイントを追加します。
リジッドボディを追加 > 物理 > 固定ジョイント
固定ジョイントを追加すれば、リジッドボディも自動で追加されます。
Fixed Jointの「Connected Body」でCubeを選択します。
これで、Cubeと連結されました。
プレイすると、Cubeと一緒にSphereが移動します。
続いて、連結を解除するためのスクリプトを作ります。
JointOff.csを作成し、Sphereに追加しましょう。
JointOff.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 JointOff : MonoBehaviour { void Update() { if(Input.GetKeyDown("space")) { FixedJoint component = this.gameObject.GetComponent<FixedJoint>(); Destroy(component); } } } |
プレイしてみましょう。
スペースキーを押すと、Fixed Jointが切り離され、Sphereが落下します。
関連記事:
Hingi Jointを使った振り子の動き
範囲内に入ればオブジェクトを落下させる
他のオブジェクトに接近すれば繋がる
特定エリアに近づくと追いかけてくる
一定距離から外れたら実行する