他のオブジェクトの近くを、ランダムで移動させるスクリプトをつくりましょう。
Cubeを基点にして、1秒おきにSphereがランダムで動いています。
関連記事:
敵キャラがランダム移動して発射
指定した5つのポイントからランダム移動
エリア内でランダム移動する
別オブジェクトの位置を取得する方法
Vector3で位置を取得
Cube、Sphere、平面オブジェクトを用意しました。
OffsetPosition.csを作成し、Sphereに追加します。
スクリプトを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class OffsetPosition : MonoBehaviour { private float randomX; private float randomZ; public Transform target; public Vector3 offset; void Start() { StartCoroutine("GetCloser"); } IEnumerator GetCloser() { while (true) { randomX = Random.Range(-2,2); randomZ = Random.Range(-2,2); offset = new Vector3(randomX, 0, randomZ); this.transform.position = target.position + offset; yield return new WaitForSeconds(1.0f); } } } |
Sphereのインスペクター上に、ターゲットのフィールドができます。
ここにはCubeを入れましょう。
プレイしてみましょう。
1秒おきに、Cubeの周りを移動している様子が、確認できます。
X座標とZ座標でランダム移動しています。
この動き、具体的にどんなシーンに活用できそうでしょうか。
たとえば、Cubeに狙いをつけているけれど、あえて狙いからずらしたい場合ですね。
ゲームの難易度を上げたり、偶然性を持たせたりなど、意外と使えるシーンは多そうです。
関連記事:
敵キャラがランダム移動して発射
指定した5つのポイントからランダム移動
エリア内でランダム移動する
別オブジェクトの位置を取得する方法