Как что-то сделать, когда анимация заканчивается? (Единство)

#c# #unity3d

#c# #unity3d

Вопрос:

После того, как в врага стреляют, мне нужно, чтобы он сыграл анимацию смерти, а затем отключился.

 anim.Play("Destroy", 0, 0f);   while (anim.GetCurrentAnimatorStateInfo(0).normalizedTime lt; 1f)  {  yield return null;  }  gameObject.SetActive(false);  

Однако, поскольку в фоновом режиме уже происходит другая анимация, нормализованное время обычно составляет около 15.035. Когда я изменю условие на это:

 ((anim.GetCurrentAnimatorStateInfo(0).normalizedTime % 1) gt; 0f)  

враг немедленно отключается.

Я также попытался сбросить нормализованное время до 0 после воспроизведения анимации, но я не знаю, как это сделать. Я нашел руководство , в котором говорится, что я должен использовать anim["Destroy"].normalizedTime = 0f; , но в итоге возвращается ошибка CS0021. Что я делаю не так?

Комментарии:

1. Уничтожить-это состояние, поэтому к нему нельзя получить доступ с помощью [], я так думаю

2. Это название анимации, поэтому оно заключено в кавычки.

Ответ №1:

Лучший способ сделать это-с помощью анимационных событий. Если вы напишете сценарий MonoBehaviour, в котором есть общедоступная функция, и добавите его в объект, в котором существует компонент Аниматора, вы сможете отредактировать свою анимацию и добавить «Событие анимации» в конце анимации, а затем в инспекторе выберите правильную функцию