4

我想在设置触发器后等待动画剪辑完成。

private void Start()
{
    anim = GetComponent<Animator>();
}


private IEnumerator Die()
{
    // Play the animation for getting suck in
    anim.SetTrigger("Shrink")      

    // Wait for the current animation to finish
    while (!anim.IsInTransition(0))
    {
        yield return null;
    } 

    // Move this object somewhere off the screen

}

动画会播放,但它不会等待完成,然后在 while 循环之后继续执行代码。

这是我的动画组件: 在此处输入图像描述

4

2 回答 2

2

您可以使用 Unity 的动画事件 ( https://docs.unity3d.com/Manual/script-AnimationWindowEvent.html )。

它们是可以放置在动画时间轴中的标记,允许您指定将被调用的函数。

于 2017-03-18T20:45:12.163 回答
1

等待动画完成的方法是使用动画完成所需的时间,您可以在查看检查器的动画中找到该时间,您只需在触发动画后等待该时间即可。

所以在你的情况下,它看起来像这样:

private IEnumerator Die()
{
    // Play the animation for getting suck in
    anim.SetTrigger("Shrink") 

    yield return new WaitForSeconds(animationTime);

    // Move this object somewhere off the screen

}
于 2017-03-18T20:29:14.893 回答