Animator如何判断当前状态向其他状态过渡并在过渡前执行事件|StateMachine

Animator没有开放过渡前事件的接口。我们只好利用Statemachine-Update监听过渡状态。

示例代码如下:

注意:

  1. A向B过渡,在过渡区间 A一直是动画机的当前状态。 AB都会执行StateUpdate,当过渡结束,状态的值由A切换到B
  2. 这里StateUpdate中的stateinfo 获取的是当前这个脚本所挂的状态的stateinfo,而不是状态机当前状态。
  3. 要想获取到动画状态是否要向其他状态过渡,只要满足当前过渡中且当前脚本的stateinfo等于当前状态机的stateinfo
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        if (isTransitionAfter==false)
        {
            if (animator.IsInTransition(0))
            {
                if ((String.Equals(animator.GetCurrentAnimatorStateInfo(0).fullPathHash,stateInfo.fullPathHash)))
                {
                    if (action != null)
                    {
                        Callback();
                    }
                }
            }
        }
    }

 

 

作者:Miracle
来源:麦瑞克博客
链接:https://www.unitymake.com/archives/unity/3271
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
分享
打赏
海报
Animator如何判断当前状态向其他状态过渡并在过渡前执行事件|StateMachine
Animator没有开放过渡前事件的接口。我们只好利用Statemachine-Update监听过渡状态。 示例代码如下: 注意: A向B过渡,在过渡区间 A一直是动画机的当前状态……
<<上一篇
下一篇>>
文章目录
关闭
目 录