В 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'е, чтобы оно не превышало заданное максимальное значение.