1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unity 指定した座標を行き来する敵の作り方 Vector3.Lerp

Last updated at Posted at 2023-02-16

Timeline_1_AdobeExpress.gif

NavMeshAgent を使わずに、指定した座標をうろうろする敵のスクリプトを書きたい方はこちらが参考になるかもしれません。

これは、インスペクターで指定した配列の座標に移動してくれるスクリプトです。Vector3.Lerpを使って実装しました。詳しい説明については、コメントに記載してあるので参考にしてみてください。

EnemyMove.cs
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class EnemyMove : MonoBehaviour
    {
        [SerializeField]
        Vector3[] positions = new Vector3[4]; // 配列の要素数
    
        [SerializeField]
        float moveTime = 1.0f; // 移動にかかる時間を秒で設定
        float timer = 0.0f; // タイマーを初期化
        int index = 0; // 配列のインデックスを初期化
    
        [SerializeField]
        bool LoopSwitch = false;
    
        // Start is called before the first frame update
        void Start()
        {
            transform.position = positions[0]; // オブジェクトの位置を配列の最初の要素に設定
        }
    
        // Update is called once per frame
        void Update()
        {
            if (index < positions.Length - 1) // 配列の最後の要素に到達するまで
            {
                timer += Time.deltaTime; // タイマーを更新
                float t = timer / moveTime; // 移動の割合を計算
                transform.position = Vector3.Lerp(positions[index], positions[index + 1], t); // オブジェクトの位置を補間
                if (t >= 1.0f) // 移動が完了したら
                {
                    index++; // 配列のインデックスを増やす
                    timer = 0.0f; // タイマーをリセット
                }
            }
    
            if (index == positions.Length - 1) // 配列の要素が最後に達成した場合
            {
                if (LoopSwitch == true) // ループスイッチがオンの場合
                {
                    index = 0; // indexを0にしてループにする
                }
            }
        }
    }

インスペクターはこのように、指定します。Positionsに、動かしたい位置を入力してMoveTimeに移動時間、LoopSwitchで、ループするか選択することができます。
スクリーンショット 2023-02-16 111646.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?