Как ограничить нормализованное времени Animator’a?

В C# для ограничения нормализованного времени Animator'a можно использовать события и проверку условий в коде. Для этого необходимо выполнить следующие шаги:

Шаг 1: Создать переменную для хранения максимального значения нормализованного времени. Например, можно создать переменную float с именем "maxNormalizedTime" и установить ее равной 1.0f. Значение 1.0f соответствует 100% продолжительности анимации.

float maxNormalizedTime = 1.0f;

Шаг 2: Создать обработчик события OnStateUpdate, который будет вызываться каждый раз при обновлении состояния аниматора. В этом обработчике мы будем проверять текущее нормализованное время анимации и ограничивать его, если оно превышает максимальное значение.

void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
    if (stateInfo.normalizedTime > maxNormalizedTime)
    {
        animator.Play(stateInfo.fullPathHash, layerIndex, maxNormalizedTime);
    }
}

Шаг 3: Зарегистрировать обработчик события OnStateUpdate с помощью метода AddStateUpdateEvent. Это позволит аниматору вызывать обработчик при каждом обновлении состояния.

animator.AddStateUpdateEvent(OnStateUpdate);

Теперь, при каждом обновлении состояния анимации, обработчик события OnStateUpdate будет вызываться. Внутри этого обработчика проверяется текущее нормализованное время анимации и, если оно превышает максимальное значение, вызывается метод Play, который перезапускает анимацию с заданным нормализованным временем (в данном случае - maxNormalizedTime).

Таким образом, приведенный код позволяет ограничить нормализованное время анимации в Animator'е, чтобы оно не превышало заданное максимальное значение.