他のオブジェクトから一定距離を取ったときに、実行されるスクリプトを作ってみましょう。
Cubeを操作して、Sphereから離れたタイミングで、落下します。
関連記事:
範囲内に入ればオブジェクトを落下させる
他のオブジェクトに接近すれば繋がる
Fixed Jointを解除してオブジェクトを落とす
特定エリアに近づくと追いかけてくる
一定の距離に達したところで削除する
X軸だけの移動量をfloat型で取得
落下させるオブジェクト
平面、キューブ、スフィアを作成します。
Cubeの座標を変更します。
Sphereの座標を変更します。
Sphereにリジッドボディを追加して、「重力を使用」のチェックを外します。
SphereMove.csを作成し、Sphereに追加します。
SphereMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { public void SphereGravity() { GetComponent<Rigidbody>().useGravity = true; } } |
プレーヤーのオブジェクト
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, transform.position.y, transform.position.z + dz ); } } |
Cubeを十字キーで動かせるようになります。
離れたら実行するスクリプト
空のオブジェクトを作成します。
ObjectDistance.csを作成し、GameObjectに追加します。
ObjectDistance.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjectDistance : MonoBehaviour { public GameObject objA; public GameObject objB; void Update() { Vector3 cube = objA.transform.position; Vector3 sphere = objB.transform.position; float dis = Vector3.Distance(cube,sphere); if(dis > 8.0f){ objB.GetComponent<SphereMove>().SphereGravity(); } } } |
GameObjectを選択し、ObjAとObjBにそれぞれ、CubeとSphereを入れます。
ゲームプレイして、Cubeを動かしてみましょう。
Cubeとの距離が8になれば、Sphereに重力がはたらいて、落下します。
関連記事:
範囲内に入ればオブジェクトを落下させる
他のオブジェクトに接近すれば繋がる
Fixed Jointを解除してオブジェクトを落とす
特定エリアに近づくと追いかけてくる
一定の距離に達したところで削除する
X軸だけの移動量をfloat型で取得