Страница 1 из 1

Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 27 авг 2013, 22:17
Receptor
Пытаюсь организовать анимацию для стрелялки от первого лица. Так случилось, что в моем проекте модель игрока со стороны (для других) и модель рук от первого лица - это одна модель. Решил, что так будет выглядеть интереснее. С самой анимацией и прорисовкой проблем нет.

Есть аниматор в два слоя, который блендится по маске (Body Mask), первый слой анимирует все, кроме рук, руки анимирует второй. Так вот столкнулся с проблемой: как быть, если оружия планируется много, и для каждого скорее всего будет своя структура стэйтов и соотвестенно клипы анимаций.

Изображение


Можно ли каким-либо образом, произвести например слияние слоев из двух контроллеров? Или заменить у контроллера слой, на слой из другого контроллера. Или стэйты менять? Или как? Подскажите, а то делать кучу стэйтов для каждого оружия, как-то не удобно совсем, учитывая тот факт, что у 90% оружия структура анимирования одинаковая. :|

Re: Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 28 авг 2013, 00:24
Strannik
Если машина анимационных состояний одинакова для каждого вида оружия, то BlendTree юзать. Если отличается, то подумать как минимизировать отличия и юзать BlendTree :)
Тип оружия - параметр, который будет блендиться в дереве. Ну а смену значения параметра "тип оружия" делать в стейте смены оружия (там тоже есть свои тонкости).


По поводу слияния.
Пока менять что либо в контроллере в рантайме скорее всего не получиться. Если не ошибаюсь, то там используется общий инстанс и его изменение отразиться на всех ботах, использующих данный контроллер, да еще и изменения сохранятся в ассете. Можно сам контроллер заменить, но не знаю как это на fps скажется в момент смены.

Re: Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 28 авг 2013, 11:05
Receptor
Если не ошибаюсь, то там используется общий инстанс и его изменение отразиться на всех ботах

Вот об этом я даже и не подумал. Точно.

Можно сам контроллер заменить

Думаю накладно будет. Да и не удобно, если мне например надо будет изменить что-то в слое Base - придется у всех 100500 менять :)

Наверное придется все же делать кучу BlendTree и параметр Int, который будет текущий индекс в массиве моих оружий. Правда плохо, что в условиях TransitionState у Int и Float есть только Greater и Less, добавили бы Equal :)

Спасибо!

Re: Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 28 авг 2013, 11:17
seaman
У Int есть Equal и NotEqual. Float сравнивать на равенство вообще не рекомендуется. Равенства двух float можно никогда не получить из-за ошибок округления.

Re: Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 28 авг 2013, 13:26
Receptor
У Int есть Equal и NotEqual. Float сравнивать на равенство вообще не рекомендуется. Равенства двух float можно никогда не получить из-за ошибок округления.


Действительно. Я видимо с флотом перепутал, т.к. Int еще не приходилось юзать :-? Спасибо.

По поводу сравнивания с плавающей точкой, можно же вот так (int)float - будет точно округляться? Less 1.25f и Greater 0.75.f будет 1 при конвертации в Int по идее. Но конечно же так не делается, я согласен.

Re: Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 28 авг 2013, 19:14
Strannik
только учтите, что в blentree можно только float использовать.

можно конечно для float проверки типа Less 1.25f и Greater 0.75.f писать в условиях переходов, но как то накладно.
Другой вариант заводить еще и второй параметр - int, который будет использоваться в переходах.

Re: Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 28 авг 2013, 19:36
Receptor
Не, я думаю о том, что бы делать несколько блендтри для каждого оружия, а нее внутри одного блендить между несколькими оружиям, т.е. для каждого оружия бленд три, эти стэйты (блендтри) блендятся интами, а внутри стэйтов уже юзать соответсвенно флот.



И раз уж пошла такая пляска, хочу еще поинтересоваться по поводу смены и скрывания оружия, как это обычно должно выглядить? Вот например, перс у меня начинает лезть по лестнице вертикальной, нужно руки освободить ему, что бы он цеплялся, так вот куда оружия девать, просто если скрыть его, никто не докапается? :D

Re: Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 28 авг 2013, 20:01
seaman
Зависит от игры. Я тут беседовал с одним. У него в магазине реальные патроны, которые вылетают из стола. их можно из магазина достать, положить...
В его случае - точно надо анимацию убирания оружия в кобуру/за плечо...

Re: Animator. Смена клипа или слоя в рантайме

СообщениеДобавлено: 29 авг 2013, 00:20
Receptor
Ого. Не, ну у меня не так все дотошно :D Ну тем более для мультиплеерной игры под браузер это не так важно, я думаю