private void Update() { if (_currentFactor != _factor) { SetNewTimeScale(_mode, _factor); _currentFactor = _factor; } if (_currentMode != _mode) { SetNewTimeScale(_mode, _factor); _currentMode = _mode; } }
private void SetNewTimeScale(TimeManagerModeEnum mode, float factor) { switch (mode) { case TimeManagerModeEnum.FastMotion: Time.timeScale = _defaultTimeScale * factor; Time.maximumDeltaTime = Time.timeScale / _maximumDeltaTimeFactor; break; case TimeManagerModeEnum.SlowMotion: if (factor != 0f) { Time.timeScale = _defaultTimeScale / factor; } else { Time.timeScale = 0f; } Time.maximumDeltaTime = 1f / _maximumDeltaTimeFactor; break; } Time.fixedDeltaTime = _defaultFixedDeltaTime * Time.timeScale; }