Как ждать завершения анимации в Unity C#
Я хочу дождаться окончания анимационного клипа после установки триггера.
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.
3 ответа
Вы можете использовать анимационные события Unity ( https://docs.unity3d.com/Manual/animeditor-AnimationEvents.html).
Это маркеры, которые могут быть размещены на временной шкале анимации и позволяют вам указать функцию, которая будет вызываться.
Чтобы дождаться окончания анимации, вы можете использовать время, необходимое для завершения анимации, которое вы можете найти в своей анимации, глядя на инспектора, вы можете просто подождать это количество времени после запуска анимации.
Так что в вашем случае это будет выглядеть примерно так:
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
}
Мой первый хит, когда я гуглю "Ожидание аниматора Unity C#": ссылка
private IEnumerator WaitForAnimation ( Animation animation )
{
do
{
yield return null;
} while ( animation.isPlaying );
}
и так далее.
второй удар: ссылка
//if animation with name "Attack" finished
if (anim.GetCurrentAnimatorStateInfo(0).IsName("Attack"))
{
// do something
}
и т. д. Google - твой друг