#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 /)
Затем вы должны задать вызываемую функцию. И каждый раз, когда анимация проходит через этот кадр, будет вызываться функция.