/// <summary> /// 现在站蹲趴不允许被打断了 /// </summary> /// <param name="id"></param> /// <param name="transfer"></param> /// <param name="interrupt"></param> /// <param name="target"></param> /// <param name="duration"></param> /// <param name="firstPersonFromValue"></param> /// <param name="firstPersonToValue"></param> /// <param name="thirdPersonFromValue"></param> /// <param name="thirdPersonToValue"></param> /// <param name="fromCharacterControllerConfig"></param> /// <param name="toCharacterControllerConfig"></param> /// <param name="updateP3"></param> internal PostureTransition(short id, Func <IFsmInputCommand, Action <FsmOutput>, bool> transfer, Func <IFsmInputCommand, Action <FsmOutput>, FsmTransitionResponseType> interrupt, PostureStateId target, int duration, float firstPersonFromValue, float firstPersonToValue, float firstPersonForwardOffsetFromValue, float firstPersonForwardOffsetToValue, float thirdPersonFromValue, float thirdPersonToValue, CharacterControllerCapsule fromCharacterControllerConfig, CharacterControllerCapsule toCharacterControllerConfig, bool updateP3 = true) : base(id, (short)target, duration) { _fromValueP1 = firstPersonFromValue; _toValueP1 = firstPersonToValue; _firstPersonForwardOffsetFromValue = firstPersonForwardOffsetFromValue; _firstPersonForwardOffsetToValue = firstPersonForwardOffsetToValue; _fromValueP3 = thirdPersonFromValue; _toValueP3 = thirdPersonToValue; _fromCharacterControllerConfig = fromCharacterControllerConfig; _toCharacterControllerConfig = toCharacterControllerConfig; _simpleTransferCondition = transfer; _interruptCondition = interrupt; _updateP3 = updateP3; }
protected static void LerpCharacterControllerCapsule(CharacterControllerCapsule from, CharacterControllerCapsule to, float normalizedTime, Action <FsmOutput> addOutput) { FsmOutput.Cache.SetValue(FsmOutputType.CharacterControllerHeight, normalizedTime <= 1 ? Mathf.Lerp(from.Height, to.Height, normalizedTime) : to.Height); addOutput(FsmOutput.Cache); FsmOutput.Cache.SetValue(FsmOutputType.CharacterControllerRadius, normalizedTime <= 1 ? Mathf.Lerp(from.Radius, to.Radius, normalizedTime) : to.Radius); addOutput(FsmOutput.Cache); }