private IEnumerator AnimateCcSettingsTransition(CharacterControllerSettings targetCcSettings, float duration) { float t = 0; AnimationCurve easeInOutCurve = AnimationCurve.EaseInOut(0, 0, 1, 1); float startHeight = controller.height; Vector3 startCenter = controller.center; while (t < 1) { controller.height = Mathf.Lerp(startHeight, targetCcSettings.height, easeInOutCurve.Evaluate(t)); controller.center = Vector3.Lerp(startCenter, targetCcSettings.center, easeInOutCurve.Evaluate(t)); t += Time.deltaTime / duration; yield return(null); } controller.height = targetCcSettings.height; controller.center = targetCcSettings.center; }
public CharacterController(Rigidbody rb, CharacterControllerSettings settings) { _rb = rb; _settings = settings; }