【转】unity Animator 怎么判断一个动画播放结束

关于unity Animator 怎么判断一个动画播放结束这里有几种方法。希望对大家有帮助。还有其他办法的可以分享一下


     第一种方法:在动画结束帧后面加个动画事件,调用下含这个变量的函数接口不是可以了?

如图,找到动画的inspector面板,在里面有个Events下拉条,下拉后在想要的帧的位置添加事件函数,函数名字记得在使用这个动画的物体的脚本里面写好,否则会报错

     第二种方法:试试animator上面那个 exit time

     第三种方法:

                           //获取动画层 0 指Base Layer.
                           AnimatorStateInfo stateinfo = animator.GetCurrentAnimatorStateInfo(0);
                           //如果正在播放walk动画.
                           if(stateinfo.IsName("Base Layer.walk"))
                         {
                         }

 

 

 

 

 

 

   问:请问一下动画状态机怎么判断动画是否播完了?

     答:   

  1. 脚本参考

  AnimatorStateInfo.normalizedTime

  float normalizedTime;
  Description:
  Normalized time of the State.
  The integer part is the number of time a state has been looped. The fractional part is the % (0-1) of progress in the current loop.

  2. 代码如下:

  

复制代码
 1 private Animator animator;
 2     void Start()
 3     {
 4         animator = this.GetComponent<Animator>();
 5     }
 6 
 7     void Update()
 8     {
 9         AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0);
10         // 判断动画是否播放完成
11         if (info.normalizedTime >= 1.0f)
12         {
13             DoSomething();
14         }
15     }

 

 

 

 

 

unity3d animation判断动画播放结束

  
  1. if (anim.IsPlaying("roar") && anim["roar"].normalizedTime >= 1)  

 

 

 

 

bool IsAnimationPlaying(GameObject objWithAnimation,string animationName)


    {       

 return  objWithAnimation.animation.IsPlaying(animationName)&&objWithAnimation.animation[animationName].normalizedTime<<span>1.0f;
    }    }

判断某个动画是否播放完毕。

IEnumerator WaitForAnimationPlayOver(GameObject objWithAnimation,string animationName)


    {  

      yield return new WaitForSeconds(objWithAnimation.animation[animationName].length);
    }    }

等待某个动画播放完成。

normalizedTime: 范围0 -- 1,  0是动作开始,1是动作结束

 

posted on 2017-03-22 14:37  mimime  阅读(9567)  评论(0编辑  收藏  举报