前提・実現したいこと
Vector2のリストに格納された座標に順番に移動するプログラムを書いています。
どうしても素早く移動したりIndexOutRangeが出てうまくいきません。
該当のソースコード
csharp
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class MoveToPoints : MonoBehaviour { 6 public List<Vector2> points; 7 int pointIter; 8 float t; 9 public float speed = 0.5f; 10 11 private void FixedUpdate() { 12 pointIter = Mathf.Clamp(pointIter, 0, points.Count); 13 14 t = Time.time * speed; 15 16 transform.position = Vector3.Lerp(points[pointIter], points[pointIter + 1], t); 17 18 if(isArrival(points[pointIter + 1])) { 19 t = 0.0f; 20 pointIter++; 21 } 22 } 23 24 private bool isArrival(Vector2 point) { 25 return (Vector2)transform.position == point; 26 } 27} 28
試したこと
目的地に到達した時にt
を0にせず
Mathf.Repeat()
を使う
この方法では前の位置と次の位置を繰り返してしまいました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。