public static void AutoTransition(AnimationStateMachine animationStateMachine, AnimationState targetState, AnimationBlendData blendData, float transitionTime = 1.0f) { float animationTime = animationStateMachine.animationTime; if (!animationStateMachine.inTransition && animationTime > transitionTime) { animationStateMachine.SetCurrentState(targetState, blendData); } }
public static void AutoTransition(AnimationStateMachine animationStateMachine, AnimationState targetState, float transitionDuration = 0.0f, float transitionOffset = 0.0f, float transitionTime = 1.0f) { float animationTime = animationStateMachine.animationTime; if (!animationStateMachine.inTransition && animationTime > transitionTime) { var blendData = new AnimationBlendData(transitionDuration, transitionOffset); animationStateMachine.SetCurrentState(targetState, blendData); } }
public override void InitAnimation(AnimationStateMachine animationStateMachine) { var idle = controller.AddNewState(ECharacterState.Idle.ToString()); animationFlags = new bool[(int)ECharacterState.Size]; for (int i = 0; i < ECharacterState.Size; ++i) { var state = controller.AddNewState(((ECharacterState)i).ToString()); // check if character contains such state if (!state) { continue; } idle.AddTransition(state, new AnimationBlendData(0, 0)); state .AddUpdate((animationTime) => AutoTransition(controller, idle)) .AddCanEnter(() => animationFlags[i]) .AddOnBegin(() => animationFlags[i] = false) ; } }
public abstract void InitAnimation(AnimationStateMachine animationStateMachine);