Unity — Как определить, в каком кадре находится моя анимация?

#c# #unity3d #animation #frame

#c# #unity3d #Анимация #кадр

Вопрос:

Итак, я использую Unity и C # для своей игры. Я хочу, чтобы что-то происходило, когда анимация находится в определенном кадре. как мне определить, в каком кадре находится анимация?

Ответ №1:

AnimationState.normalizedTime покажет вам ход анимации в значении от 0 до 1, вы можете экстраполировать это, преобразовав его в вашу частоту кадров.

 if (myAnim.GetCurrentAnimatorStateInfo(0).normalizedTime == .5f) {// the animation is halfway}
  

Ответ №2:

Вы можете достичь этого, используя события анимации.

Во-первых, создайте функцию в своем скрипте для получения события. Допустим, ваша функция называется «OnAnimationHalfWay».

Затем перейдите к своей анимации и добавьте событие анимации, выбрав нужный кадр и нажав кнопку «Добавить событие».

После этого нажмите на маленький флажок события, который вы только что создали.

Наконец, зайдите в свой инспектор и в свойстве «function» выберите любое имя вашей функции, в моем случае это «OnAnimationHalfWay».

Надеюсь, это помогло вам!

Ответ №3:

Если вы хотите, чтобы что-то произошло в определенном кадре, вы должны использовать события для анимации.

Вот официальная документация для достижения этого:

https://docs.unity3d.com/Manual/AnimationEventsOnImportedClips.html

В вашей анимации выберите кадр и нажмите кнопку события: введите описание изображения здесь

(Изображение из https://docs.unity3d.com /)

Затем вы должны задать вызываемую функцию. И каждый раз, когда анимация проходит через этот кадр, будет вызываться функция.