IEnumerator Patrol() { patrolRoute.StartPatrolRoute(); agent.SetDestination(patrolRoute.GetNextPatrolPointPosition()); while (true) { if (Vector3.Distance(patrolRoute.GetNextPatrolPointPosition(), transform.position) <= distanceToPointToGoToNextPoint) { patrolRoute.GoToNextPatrolPoint(); agent.destination = patrolRoute.GetNextPatrolPointPosition(); } yield return(null); // Maybe make it wait for some seconds so it's not so performance intensive } }