他のオブジェクトの座標情報を取得して、それを元にして位置を決定したい場合があります。
今回は、別オブジェクトの位置よりも少しずらした場所に、一定距離を保てるように作成します。
子オブジェクトとしてではなく、位置情報を取得する形で作ってみましょう。
関連記事:
敵キャラがランダム移動して発射
指定した5つのポイントからランダム移動
エリア内でランダム移動する
別オブジェクトの周りをランダム移動
別オブジェクトの座標を取得
オブジェクトは3つ用意しました。
オブジェクト名はそのまま使用しています。
まずはSphereのほうからスクリプトを作成しましょう。
OffsetPositoin.csを作成し、Sphereに追加します。
スクリプトを編集しましょう。
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 OffsetPosition : MonoBehaviour { public Transform target; public Vector3 offset; void Update() { offset = new Vector3(2, 2, 2); this.transform.position = target.position + offset; } } |
ターゲットフィールドには、Cubeを入れます。
プレイしてみましょう。
SphereのXYZ座標が、Cubeよりそれぞれ2離れたところに来ています。
一定距離を取って動く
あとはCubeに動きをつけていきましょう。
CubeMove.csを作成し、Cubeに追加。
スクリプトを編集します。
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 CubeMove : MonoBehaviour { private float speed = 5.0f; void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position = new Vector3 ( transform.position.x + moveX, transform.position.y, transform.position.z + moveZ ); } } |
プレイしてみましょう。
十字キー(WASDの各キーも可)で操作してみます。
Cubeの座標情報を取得して、一定距離を取りながら移動します。
関連記事:
敵キャラがランダム移動して発射
指定した5つのポイントからランダム移動
エリア内でランダム移動する
別オブジェクトの周りをランダム移動