#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, в котором есть общедоступная функция, и добавите его в объект, в котором существует компонент Аниматора, вы сможете отредактировать свою анимацию и добавить «Событие анимации» в конце анимации, а затем в инспекторе выберите правильную функцию