public void DoSlowMotion(float duration, float slowFactor, TimeScale.Type type) { SlowMotionFactor = slowFactor; IsSlowMotion = true; switch (type) { case TimeScale.Type.Global: TimeScale.GlobalTimeScale = 1 / slowFactor; StartCoroutine(SlowMotion(duration, type)); break; case TimeScale.Type.Player: TimeScale.PlayerTimeScale = 1 / slowFactor; StartCoroutine(SlowMotion(duration, type)); break; case TimeScale.Type.Enemy: TimeScale.EnemyTimeScale = 1 / slowFactor; StartCoroutine(SlowMotion(duration, type)); break; } }
private static IEnumerator SlowMotion(float duration, TimeScale.Type type) { float elapsedTime = 0f; while (elapsedTime < duration) { yield return(elapsedTime += Time.deltaTime); } switch (type) { case TimeScale.Type.Global: TimeScale.GlobalTimeScale = TimeScale.DEFAULT; break; case TimeScale.Type.Player: TimeScale.PlayerTimeScale = TimeScale.DEFAULT; break; case TimeScale.Type.Enemy: TimeScale.EnemyTimeScale = TimeScale.DEFAULT; break; } IsSlowMotion = false; }