Unity, C#. Есть молдель с animator, в котором уже настроены стейты-анимации и параметры для переходов между ними.
Мне нужно проигрывать анимации в определенном порядке. Чтобы вызвать нужную анимацию мне достаточно чекнуть нужный параметр:
GetComponent.<Animator>().SetBool("someparameter",true);
Как написать условие "когда текущая анимация закончится"?
Все варианты что нахожу либо про Animation а не Animator, либо слишком сложны а нужен простой способ в котором можно быстро разобраться использовать.
У Animator есть метод GetCurrentAnimatorStateInfo, который получает информацию о текущем состоянии на указанном слое Контроллера Аниматора (AnimatorController). То есть он возвращает AnimatorStateInfo Вот им и стоит воспользоваться.
У AnimatorStateInfo, в свою очередь, есть поле IsName - которое говорит, совпадает ли name с именем активного состояния в statemachine. В итоге может получится что-то такое:
private Animator animator;
private void Start() {
animator = GetComponentInChildren<Animator>();
}
public bool IsAnimationPlaying(string animationName) {
// берем информацию о состоянии
var animatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);
// смотрим, есть ли в нем имя какой-то анимации, то возвращаем true
if (animatorStateInfo.IsName(animationName))
return true;
return false;
}
Как применение:
if (IsAnimationPlaying("Run"))
Debug.Log("Player is running");
Для проверки нескольких анимаций скорее всего придется их поместить в массив и пробегаться циклом:
foreach (var move in attackMoves) {
if (IsAnimationPlaying(move.animationName)) {
// do smth...
}
}
P.S. GetCurrentAnimatorStateInfo - получает информацию на определенном слое. Поэтому чтобы взять инфу на самом базовом слое стоит GetCurrentAnimatorStateInfo(0). В других слоях индекс будет меняться естественно.
Не очень понятно что вы хотите, если после того как одна анимация закончилась вы хотите перейти в другую так настройте переходы между стейтами в Mecanim.
Если вам нужно отловить сам момент когда делается выход из состояния можно воспользоваться классами StateMachineBehaivour который как раз умеет реагировать на работу в состояние. Этот скрипт навешивается в Mecanim на само состояние. Его надо выбрать в сцене и в окне инспектора добавить соотвествующий скрипт, как это делается с компонентами на сцене.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости