using Game; using System.Collections; using System.Collections.Generic; using UnityEngine; public enum E_ONCEATTACK_STEP { None, InAttack, InAttackCanToNext } public class anime_OnceAttack : StateMachineBehaviour { public float CanSkipTime = 0.8f; public bool SendCanToNext = false; public long RoleID = 0; public int NodeType = 0; // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { NodeType = animator.GetInteger("NodeType"); RoleID = animator.GetInteger("RoleID"); SendCanToNext = false; AppEntry.Event.Fire(null, MainPlayerOnceAttackEventArgs.Create(RoleID,(E_NODE_TYPE)NodeType, E_ONCEATTACK_STEP.InAttack)); } // OnState}Update is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (!SendCanToNext && stateInfo.normalizedTime > 0.8f) { SendCanToNext = true; AppEntry.Event.Fire(null, MainPlayerOnceAttackEventArgs.Create(RoleID, (E_NODE_TYPE)NodeType, E_ONCEATTACK_STEP.InAttackCanToNext)); } } // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { AppEntry.Event.Fire(null, MainPlayerOnceAttackEventArgs.Create(RoleID, (E_NODE_TYPE)NodeType, E_ONCEATTACK_STEP.None)); } // OnStateMove is called right after Animator.OnAnimatorMove() //override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) //{ // // Implement code that processes and affects root motion //} // OnStateIK is called right after Animator.OnAnimatorIK() //override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) //{ // // Implement code that sets up animation IK (inverse kinematics) //} }