如何在Unity C中等待动画结束#

时间:2017-03-18 20:16:36

标签: c# unity3d animator

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

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循环后的代码。

这是我的动画组件: enter image description here

2 个答案:

答案 0 :(得分:0)

等待动画完成的操作是使用动画完成的时间,您可以在动画中查看检查器,您可以在触发动画后等待一段时间。

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

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

}

答案 1 :(得分:-1)

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

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