Как проверить слой аниматора?

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

Как проверить слой аниматора?

Сообщение NOVA 04 окт 2013, 12:01

Надо посчитать количество ударов. Удары находятся в слое Fight аниматора.
Вот строчка для проверки конкретной анимации
if (currentBaseState.nameHash==Animator.StringToHash("Fight.L Hit Head 1"))
Можно ли её переписать так, чтобы проверялся только слой Fight?
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как проверить слой аниматора?

Сообщение Receptor 04 окт 2013, 12:49

Вы же как-то currentBaseState получаете?

GetCurrentAnimatorStateInfo(int layerIndex); ?
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Как проверить слой аниматора?

Сообщение NOVA 04 окт 2013, 13:04

Receptor писал(а):Вы же как-то currentBaseState получаете?

GetCurrentAnimatorStateInfo(int layerIndex); ?


Чоэта? Это даже редактор отрыгивает.

Ссылка на рабочий скрипт есть?
Нашёл только это. Поленились описать примером.
http://docs.unity3d.com/Documentation/ScriptReference/Animator.GetLayerName.html
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как проверить слой аниматора?

Сообщение seaman 04 окт 2013, 13:27

Можно ли её переписать так, чтобы проверялся только слой Fight?

Так у Вас только он и проверяется.
"Fight.L Hit Head 1"
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как проверить слой аниматора?

Сообщение NOVA 04 окт 2013, 14:01

seaman писал(а):
Можно ли её переписать так, чтобы проверялся только слой Fight?

Так у Вас только он и проверяется.
"Fight.L Hit Head 1"

Да не. Здесь проверяется анимация L Hit Head в слое fight. А мне надо просто проверить слой fight с любой анимацией. Как только процесс забегает в слой fight надо получить true)
Потому что ударов много и прописывать все анимации слоя в общее условие очень громоздко. Их штук 25.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как проверить слой аниматора?

Сообщение seaman 04 окт 2013, 14:12

Ага, не понял.
Можно как написали Выше. И не надо писать, что "редактор отрыгивает". Нужно просто думать. Мануал испортился. Эта функция возвращает массив проигрываемых анимаций в данном слое. Ну и проверять нужно что вернет - null, массив с нулем значений или что-то осмысленное.
Можно также по тегу. Все анимации в слое делать с одним тегом и проверять AnimatorStateInfo.tagHash
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как проверить слой аниматора?

Сообщение NOVA 04 окт 2013, 14:13

seaman писал(а):
Можно также по тегу. Все анимации в слое делать с одним тегом и проверять AnimatorStateInfo.tagHash


О вот это ближе спасибо.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как проверить слой аниматора?

Сообщение seaman 04 окт 2013, 14:15

Т.е. просто подумать и использовать GetCurrentAnimatorStateInfo - это дальше?
Синтаксис:
Используется csharp
AnimationInfo[] inf1 = __anim.GetCurrentAnimationClipState(0);
if(inf1 != null && inf.Length > 0)
{
   //УРА у нас что-то проигрывается в слое 0!!!!
}
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


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

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

Сейчас этот форум просматривают: Tolking и гости: 31