using Game; using System.Collections; using System.Collections.Generic; using UnityEngine; public enum E_ANIME_STEP { OnEnter, OnTimeProcess, OnExit } public class anime_CamerShake : StateMachineBehaviour { public E_ANIME_STEP ShakeStep = E_ANIME_STEP.OnExit; public float Multiple = 1; public float OnTimeProcess = 0.7f; bool bDoShake = false; // 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) { bDoShake = false; if (ShakeStep == E_ANIME_STEP.OnEnter) AppEntry.Event.Fire(null, CameraShakeEventArgs.Create(Multiple)); } // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (ShakeStep == E_ANIME_STEP.OnTimeProcess && !bDoShake && stateInfo.normalizedTime > OnTimeProcess) { bDoShake = true; AppEntry.Event.Fire(null, CameraShakeEventArgs.Create(Multiple)); } } // 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) { bDoShake = false; if (ShakeStep == E_ANIME_STEP.OnExit) AppEntry.Event.Fire(null, CameraShakeEventArgs.Create(Multiple)); } // 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) //} }