今回はUnity2Dで指定した地点に自動でオブジェクトが移動するのを実装してみます。
はじめに
Unityのバージョンは2021.3.14f1です。
下記にてオブジェクトを左右に自動で移動させています。
今回は、指定した位置に自動で移動するようにしてみます。
実装開始
簡単に画面を作成してスクリプトで実装していきます。
画面作成
Hierarchyで右クリック、「2DObject」→「Sprites」→「Square」を追加します。
Hierarchyで右クリック、CreateEmptyで空のオブジェクトを追加し名前を「Points」にします。
移動先のポイントを作成します。今回は分かりやすいように赤色にしています。移動先を見せたくない場合は、Spriteをなしに。
コピーしてポイントを右回りに複数セットしていきます。
スクリプトの作成
下記スクリプトを作成します。パラメータでポイントを指定して移動、ポイントの近くになったら次のポイントへ移動と言う感じです。
using UnityEngine; public class AutoMove : MonoBehaviour { [SerializeField] private Transform[] point; private Rigidbody2D rb; private float speed = 2.0f; private Transform target; private int index = 0; private void Start() { rb = GetComponent<Rigidbody2D>(); target = point[index]; } private void Update() { if (Vector2.Distance(target.position, transform.position) <= 0.1f) { if (index != point.Length - 1) { index++; target = point[index]; } } } void FixedUpdate() { Vector2 direction = (target.position - transform.position).normalized; rb.velocity = direction * speed; } }
SquareにRigidbody2Dをアタッチして、GravityScaleを0に。スクリプトをアタッチして、パラメータをセットします。
実行すると下記のような感じになります。