AkiraPixelWind/Assets/Scripts/Main/AnimeScript/anime_CamerShake.cs

59 lines
2.0 KiB
C#
Raw Normal View History

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)
//}
}