Как узнать что анимация завершена?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как узнать что анимация завершена?

Сообщение VitaliyCh 23 июн 2011, 19:44

Здравствуйте! Не подскажете генерируется ли какое-нибудь событие при завершении проигрывания анимации и если есть то так его получить? Нашел переменную Animation.isPlaying, но проверять на каждом кадре не хочется. Есть еще класс AnimationEvent пока не смог с ним разобраться может кто подскажет как с ним работать? Спасибо!
VitaliyCh
UNец
 
Сообщения: 44
Зарегистрирован: 02 май 2011, 20:29

Re: Как узнать что анимация завершена?

Сообщение Neodrop 23 июн 2011, 20:03

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

Re: Как узнать что анимация завершена?

Сообщение Левш@ 23 июн 2011, 21:05

Как альтернатива, есть еще такая примочка:

Синтаксис:
Используется javascript
yield WaitForSeconds(animation.clip.length);


Пауза (ждет пока закончиться анимация).
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Как узнать что анимация завершена?

Сообщение VitaliyCh 23 июн 2011, 21:38

VitaliyCh
UNец
 
Сообщения: 44
Зарегистрирован: 02 май 2011, 20:29

Re: Как узнать что анимация завершена?

Сообщение VitaliyCh 23 июн 2011, 22:17

Скажите пожалуйста, а можно потом удалить такое событие: AnimationClip.AddEvent(AnimationEvent)? В документации не нашел ничего похожего :(
VitaliyCh
UNец
 
Сообщения: 44
Зарегистрирован: 02 май 2011, 20:29

Re: Как узнать что анимация завершена?

Сообщение Neodrop 23 июн 2011, 22:24

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

Re: Как узнать что анимация завершена?

Сообщение seaman 23 июн 2011, 22:26

Я сделал себе такой метод:
Синтаксис:
Используется csharp
    static public IEnumerator FinishAnim(Animation anim, Action<string> act, string name)
    {
        AnimationState desireAnim = null;
        foreach (AnimationState ast in anim)
        {
            if (ast.name != name || !anim.IsPlaying(ast.name)) continue;
            desireAnim = ast;
            break;
        }
        if(desireAnim == null)
            yield break;
        //время, на которое нужно вызывать WaitForSecond  (анимация на момент вызова может уже идти какое-то время!)
        var waitTime = desireAnim.length - desireAnim.time + Mathf.FloorToInt(desireAnim.time / desireAnim.length) * desireAnim.length;
        yield return new WaitForSeconds(waitTime);
        act("finishanim" + desireAnim.name);
    }

Ищет анимацию с переданным именем. Если такой нет, или она в данный момент не проигрывается - просто возвращается. Иначе вызывает указанную акцию (Action) и передает ей имя анимации. Action, естественно, должна быть определена в Вашем скрипте.
Последний раз редактировалось seaman 23 июн 2011, 22:38, всего редактировалось 1 раз.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как узнать что анимация завершена?

Сообщение VitaliyCh 23 июн 2011, 22:30

Всем большое спасибо!
VitaliyCh
UNец
 
Сообщения: 44
Зарегистрирован: 02 май 2011, 20:29

Re: Как узнать что анимация завершена?

Сообщение Nachiket 21 авг 2011, 19:23

мой метод тоже очень прост:
Синтаксис:
Используется javascript
var Walk : AnimationClip;
function Update()
{
if(!animation.IsPlaying("Walk"))
{
   ...
}
}
 
Жизнь она такая в общем, и есть. проснулся, поработал, лег спать. кому повезло - тот еще поел...
Nachiket
UNец
 
Сообщения: 23
Зарегистрирован: 21 авг 2011, 18:17


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 24