Как получить текущий фрейм анимации объекта?

Программирование на Юнити.

Как получить текущий фрейм анимации объекта?

Сообщение Zavhoz 05 окт 2009, 13:24

собственно вопрос - Как получить текущий фрейм анимации объекта?
уже немного понимая семантику скриптов юнити, мне кажется что, где-то не углядел. бегло посмотрел на заморском форуме, там что-то люди тоже не знают как это получить.
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: Как получить текущий фрейм анимации объекта?

Сообщение Neodrop 05 окт 2009, 14:38

Хм.. Не сталкивался с этой задачей, но, если действительно нет такой прямой возможности, то это вполне можно реализовать через AnimationClip.AddEvent.
На оф. сайте был отличный пример работы с анимациями, эвентами и Curve кривыми для анимаций.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Как получить текущий фрейм анимации объекта?

Сообщение gnoblin 05 окт 2009, 18:05

Я работаю с time анимации... Как обращаться к кадру не в курсе.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Как получить текущий фрейм анимации объекта?

Сообщение Tolking 06 окт 2009, 08:10

Что значит кадр анимации? Именно между 2 кадрами анимации 1 секунда, прошло 0.76 секунды, какой это кадр?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Как получить текущий фрейм анимации объекта?

Сообщение Zavhoz 06 окт 2009, 15:23

так же как и вес смешивания анимаций, существует вес кадров в анимации... т.е. на 0 секунде будет 1.0, на 0.76 секунде будет вес кадра 1,76. по истечении секунды будет 2.0. если я где-то ошибаюсь покажите мне.

ситуацив в жизни очень много когда надо знать текущий кадр.

кстати, забегая вперёд, я пока ещё не встетил (сильно не искал) функции, которой можно установить анимацию на нужный кадр.
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: Как получить текущий фрейм анимации объекта?

Сообщение Mr_Anderson 06 окт 2009, 15:55

SampleAnimation метод у GameObject есть. Можно управлять анимацией произвольно ;)
Mr_Anderson
UNIт
 
Сообщения: 143
Зарегистрирован: 16 апр 2009, 13:32

Re: Как получить текущий фрейм анимации объекта?

Сообщение Zavhoz 08 окт 2009, 08:52

подсмотрев на официальном форуме дискуссию по теме схожей с этой, получилось следующее:

Код: Выделить всё
/*
* frameRate - количество кадров в секунду, брать в 3Д редакторе,
*  либо считать (animation["анимация"].time * animation["анимация"].speed / animation["анимация"].length) * totalFrames
* animLenght - длина анимации (animation["анимация"].length)
* animTime - текущее время анимации (animation["анимация"].time)
*/
public static float getCurrentFrame(int frameRate, float animLenght, float animTime)
{
    int nowCicle = (int) (animTime / animLenght);
    float frameLeft = animTime - nowCicle * animLenght;
    float currentFrame= frameLeft * frameRate;
    return currentFrame;
}
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14