[SerializeField]
private Transform[] points;

[SerializeField]
private float speed = 3f;

private int index;

void Update()
{
    Transform target =
        points[index];

    transform.position =
        Vector3.MoveTowards(
            transform.position,
            target.position,
            speed * Time.deltaTime
        );

    if (Vector3.Distance(
        transform.position,
        target.position) < 0.1f)
    {
        index++;

        if (index >= points.Length)
        {
            index = 0;
        }
    }
}