Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
 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);
 }