У меня есть система путевых точек в проекте Unity 2D, где GameObject будет следовать за каждой путевой точкой по порядку, а затем повторять процесс, я хочу, чтобы GameObject останавливался в каждой точке в течение фиксированного периода времени, и я думал, что смогу достичьэто с использованием сопрограммы, но не совсем уверенный в том, как этого добиться, я до сих пор создал сопрограмму с именем WaitAtPoint, а затем вызываю ее при каждом движении путевой точки, но безрезультатно, не уверен, что я делаю неправильно.
public class BrainBoss : MonoBehaviour {
[SerializeField]
Transform[] waypoints;
[SerializeField]
float moveSpeed = 2f;
int waypointIndex = 0;
// Start is called before the first frame update
void Start()
{
transform.position = waypoints[waypointIndex].transform.position;
}
// Update is called once per frame
void Update()
{
Move();
}
void Move()
{
transform.position = Vector2.MoveTowards(transform.position,
waypoints[waypointIndex].transform.position, moveSpeed * Time.deltaTime);
if(transform.position == waypoints[waypointIndex].transform.position)
{
StartCoroutine(WaitAtPoint());
waypointIndex += 1;
}
if(waypointIndex == waypoints.Length)
{
waypointIndex = 1;
}
}
IEnumerator WaitAtPoint()
{
yield return new WaitForSeconds(3f);
}
}