// Update is called once per frame void Update() { // Make sure we have a waypoint controller if (_waypointController == null) { return; } // Rotate towrds the current waypoint target Transform currentTarget = _waypointController.GetWaypointTransform(_currentWaypointTargetIndex); Vector3 direction = currentTarget.position - transform.position; Quaternion toRotation = Quaternion.LookRotation(direction); transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, _rotateSpeed * Time.deltaTime); // Move forwards _rb.velocity = (transform.forward * _moveSpeed); // Are we close enough? float distanceToWaypoint = Vector3.Distance(transform.position, currentTarget.position); if (distanceToWaypoint <= _waypointController.targetDistance) { // Go to next target _currentWaypointTargetIndex = _waypointController.GetNextWaypointIndex(_currentWaypointTargetIndex); _waypointsReached++; // UpdateVehicleOrder(); } }