if(animator)
{
//get the current state
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
//if we're in "Run" mode, respond to input for jump, and set the Jump parameter accordingly.
if(stateInfo.nameHash == Animator.StringToHash("Base Layer.RunBT"))
{
if(Input.GetButton("Fire1"))
animator.SetBool("Jump", true );
}
else
{
animator.SetBool("Jump", false);
}
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
//set event parameters based on user input
animator.SetFloat("Speed", h*h+v*v);
animator.SetFloat("Direction", h, DirectionDampTime, Time.deltaTime);
}
AnimatorStateInfo stateInfo = this.animator.GetCurrentAnimatorStateInfo(0);
if (!stateInfo.IsName(IdleState))
{
// 每次设置完参数之后,都应该在下一帧开始时将参数设置清空,避免连续切换
this.animator.SetInteger(ActionCMD, 0);
}
if (stateInfo.IsName(AtkSliceState) && (stateInfo.normalizedTime > 0.6f) && (this.curComboCount == 2))
{
// 当在攻击1状态下,并且当前状态运行了0.6正交化时间(即动作时长的60%),并且用户在攻击1状态下又按下了“攻击键”
this.animator.SetInteger(ActionCMD, 1);
}
if (stateInfo.IsName(AtkStabState) && (stateInfo.normalizedTime > 0.8f) && (this.curComboCount == 3))
{
// 挡在攻击2状态下(同理攻击1状态)
this.animator.SetInteger(ActionCMD, 1);
}