For a looped waypoint system in Unity, attach this C# script to a game object which you want to move. Enter a number in 'size' under Points. This is the number of waypoints which you want the car to hit. The last waypoint does NOT need to be the first waypoint. In Unity, set up waypoint game objects with a collider, with 'is trigger' checked (like below). Script: public List points = new List (); public GameObject currentPoint; public GameObject nextpoint; int current = 0; float speed, defaultSpeed; void Start () { currentPoint = points[current]; nextpoint = points[current +1]; defaultSpeed = 4.3f; speed = defaultSpeed; } void Update () { transform.position = Vector3.MoveTowards(transform.position, nextpoint.transform.position, speed * Time.deltaTime); if(current < points.Count) { currentPoint = points[current]; ...