Unity GetCurrentAnimatorStateInfo 方法调用错误 解决

  • Post author:
  • Post category:其他




GetCurrentAnimatorStateInfo方法:

Returns an AnimatorStateInfo with the information on the current state.

if (!enemy.anim.GetCurrentAnimatorStateInfo(0).IsName("Idle"))

0指的是 Animator的 动画层layer,base layer;

这一句代码 意思是 判断 敌人动画当前状态 是否是 Idle

在这里插入图片描述



问题描述:


在Idle 动画播放结束后,并未调用 该方法

在这里插入图片描述

在这里插入图片描述

        if (!enemy.anim.GetCurrentAnimatorStateInfo(0).IsName("Idle"))
        {
            enemy.animState = 1;
            enemy.MoveToTarget();    
        }



原因分析:


使用GetCurrentAnimatorStateInfo 方法去判断动画播放结束时 需要注意, Animator 当前状态包括了transition,如果transition不满足要求,此状态不会结束;

由于设置了Conditions,此时 还是处于Idle状态,以上代码段并未执行

同时,HasExitTime 与 Conditions 应避免同时使用

解决方法, 勾选HasExitTime ,去掉Conditions




版权声明:本文为weixin_41054345原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。