IEnumerator FixerToNextLevel(LevelSO level) { BackToCutscene(); yield return(wait1Second); spawner.SpawnLevel(level); enemiesSpawned = level.numberOfEnemies; onEnemiesCountChanged.Invoke(enemiesSpawned); fixer.Stand(); yield return(wait1Second); Vector3 fixingPosition = level.arcadeMachine.GetFixingPosition(); Vector3 fixerStartPosition = fixer.transform.position; float step = (fixer.speed / (fixerStartPosition - fixingPosition).magnitude) * Time.fixedDeltaTime; float t = 0; while (t <= 1.0f) { t += step; // Goes from 0 to 1, incrementing by step each time fixer.transform.position = Vector3.Lerp(fixerStartPosition, fixingPosition, t); // Move objectToMove closer to b yield return(new WaitForFixedUpdate()); // Leave the routine and return here in the next frame } fixer.transform.position = fixingPosition; fixer.Fixing(); yield return(wait1Second); ToPlayMode(); //yield return new WaitForSeconds(5f); //ToNextLevel(); }