Unity Animation Event не срабатывает

Анимация Move состоит из одного кадра и одного Event. В случае, если эта анимация начинается после End, игрок зависает в состоянии Move, но метод из Event не запускается, что блокирует движение.

введите сюда описание изображения

Код, где происходит зависание:

private IEnumerator PostMove()
{
    // ждём окончания движения
    while (animator.GetBool("isMove")) { yield return new WaitForFixedUpdate(); }
    // запускаем корутину обычного движения
    mainDirection = secondDirection; 

    animator.SetBool("isMove", true);
    secMovement = null;
    secondDirection = Direction.zero;
}

После переключения состояние в строке animator.SetBool("isMove", true); Происходит переключение на Move, но Event не срабатывает.

При добавлении yield return new WaitForFixedUpdate(); перед animator.SetBool("isMove", true); всё работает лучше, но иногда всё также зависает. Пробовал использовать State Machine Behaviours:

override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
    animator.GetComponent<Player>().StartMove();
}

Но и тут аналогичная ситуация.

Почему в этом случае не срабатывает Event и как это можно исправить?


Ответы (1 шт):

Автор решения: Mr. Linsux

Разобрался. Глупая ошибка, но вдруг кому-то поможет. Event и подобные функции Unity не срабатывали из-за того, что animator и не выходил из своего состояния, несмотря на animator.SetBool("isMove", false); , ибо, видимо, в том же кадре оно возвращалось обратно, следуя указаниям скрипта управления, в моём случае.

Выяснил экспериментальным путём с помощью State Machine Behaviours.

→ Ссылка