Unity - як написати - ldquo; після того, як анімація закінчиться - rdquo

Unity, C#. Є молдель із animator, в якому вже налаштовані стейти-анімації та параметри для переходів між ними.

Мені потрібно програвати анімації у певному порядку. Щоб викликати потрібну анімацію, мені достатньо чекнути потрібний параметр:

Як написати умову "коли поточна анімація закінчиться"? Всі варіанти що знаходжу або про Animation, а не Animator, або занадто складні, а потрібен простий спосіб, в якому можна швидко розібратися використовувати.

Animator має метод GetCurrentAnimatorStateInfo, який отримує інформацію про поточний стан на вказаному шарі Контролера Аніматора (AnimatorController). Тобто він повертає AnimatorStateInfo Ось ним і варто скористатися.

У animatorStateInfo , у свою чергу, є поле IsName - яке говорить, чи збігається ім'я з ім'ям активного стану в statemachine . У результаті може вийде щось таке:

Для перевірки кількох анімацій, швидше за все, доведеться їх помістити в масив і пробігатися циклом:

P.S. GetCurrentAnimatorStateInfo - отримує інформацію на певному шарі. Тому взяти інфу на базовому шарі варто GetCurrentAnimatorStateInfo(0) . В інших шарах індекс змінюватиметься природно.

Не дуже зрозуміло, що ви хочете, якщо після того як одна анімація закінчилася ви хочете перейти в іншу так налаштуйте переходи між стейтами в Mecanim .

Якщо вам потрібно відловити сам момент, коли робиться вихід зі стану, можна скористатися класами StateMachineBehaivour, який якраз вміє реагувати на роботу в стан. Цей скрипт навішується в Mecanim на стан. Його треба вибрати у сцені та у вікні інспектора додати відповідний скрипт, як це робиться з компонентамина сцені.