private IEnumerator FadeOutCoroutine() { var bloom = GameObject.FindObjectOfType <BloomOptimized>(); float targetIntensity = 2.3f; float targetThreshold = 0.4f; var musicController = GameObject.FindObjectOfType <MusicController>(); bool tweenMusic = musicController != null && musicController.gameplay != null; var wait = new WaitForEndOfFrame(); float tween = 1f; float tweenSpeed = 0.5f; float startTime = Time.realtimeSinceStartup; float lastTime = startTime; float deltaTime = 0; float fixedDeltaTime = Time.fixedDeltaTime; while (tween > 0.1) { deltaTime = Time.realtimeSinceStartup - lastTime; lastTime = Time.realtimeSinceStartup; if (bloom != null) { bloom.intensity = Mathf.Lerp(bloom.intensity, targetIntensity, tweenSpeed * deltaTime); bloom.threshold = Mathf.Lerp(bloom.threshold, targetThreshold, tweenSpeed * deltaTime); } if (tweenMusic) { musicController.gameplay.volume = Mathf.Lerp(musicController.gameplay.volume, 0f, tweenSpeed * deltaTime); } // Slow down. Time.timeScale = Mathf.Lerp(Time.timeScale, 0f, tweenSpeed * deltaTime); Time.fixedDeltaTime = fixedDeltaTime * Time.timeScale; tween = Mathf.Lerp(tween, 0f, tweenSpeed * deltaTime); yield return(wait); } // Speed up again. Time.timeScale = 1f; Time.fixedDeltaTime = fixedDeltaTime; SetLevelFinished(true); ridParents.GetRidParents(); gameController.DisActiveButtonOnOver(); //gameController.SetActiveButtonOnOver(); //levelCompletedMenu.SetActive(true); // Register level complete. //LevelCompleted(); }