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

Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 18 янв 2016, 22:07
Unitis
На данный момент...

1. Создал в блендере модель анимированного персонажа(анимацию ходьбы).
2. Перекинул её в юнити.
3. Разместил модель на сцене.
4. Создал и повесил скрипт(персонаж должен ходить при нажатии определенной клавиши).

Пошли ошибки... что я делаю не так?

Собственно, хотелось так же спросить чем отличается animation от animator? Разные технологии анимации? Это меня ещё немного путает.

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 19 янв 2016, 04:23
Djaffar
Коротенькие ролики с ответами на все вопросы - https://www.youtube.com/playlist?list=P ... ykCiBKLh_X

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 19 янв 2016, 23:12
Unitis
Спасибо за ссылку. Хорошие уроки. Но непонятно как персонаж ходит. В скрипте я не заметил никакого отслеживания нажатия клавиш.

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 19 янв 2016, 23:42
seaman
Как это нет отслеживания клавиш?
Синтаксис:
Используется csharp
    public void Update()
        {
        __vert = Input.GetAxis("Vertical");
        __horiz = Input.GetAxis("Horizontal");
        __run = Input.GetButton("Run") ? 1 : 0;
        __sneak = Input.GetButton("Sneak");
        __cheer = Input.GetButtonDown("Cheer");
        __horiz += __horiz > 0 ? __run : __horiz < 0 ? -__run : 0;
        __vert += __vert > 0 ? __run : __vert < 0 ? -__run : 0;

        }

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 20 янв 2016, 00:29
Unitis
Откуда берется этот код?

Я привык по старинке всё контролировать из скрипта. В том числе и процесс анимации(старт/стоп, начало/конец). Но во всех уроках которые я смотрел персонаж движется сам и, судя по всему, либо используется встроенное управление либо что-то просто остается за кадром.

Что означает строка Input.GetButton("Run") ? Нет такой кнопки на клавиатуре с именем "Run".

Хотелось бы получить нечто наподобие следующего.

Синтаксис:
Используется csharp
if (Input.GetKey (KeyCode.W))
    PlayAnimation(0,30,"walk");



Второй день никак не вникну что да как. :-?

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 20 янв 2016, 14:56
seaman
Для начала почитайте мануал
http://docs.unity3d.com/ScriptReference ... utton.html
Затем посмотрите уроки по Юнити. По назначению "виртуальных клавиш".
Я привык по старинке всё контролировать из скрипта. В том числе и процесс анимации(старт/стоп, начало/конец). Но во всех уроках которые я смотрел персонаж движется сам и, судя по всему, либо используется встроенное управление либо что-то просто остается за кадром.

В Меканим по сути все контролируется событиями и состояниями. Аниматор переходит из одного состояния в другое по определенным в нем условиям. Условие - либо окончание анимации, либо изменение передаваемых в аниматор параметров. Т.е. если Вы хотите однозначно управлять анимациями (не советую, но вдруг) - нужно в аниматоре завести параметр, по которому будет производится переход в состояние без анимации и назад.
Это извращенная практика, но возможная.

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 20 янв 2016, 15:01
waruiyume
Т.е. если Вы хотите однозначно управлять анимациями (не советую, но вдруг) - нужно в аниматоре завести параметр, по которому будет производится переход в состояние без анимации и назад.

Ничего заводить не нужно, нужные стейты можно активировать напрямую.

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 20 янв 2016, 19:32
Unitis
seaman писал(а):Т.е. если Вы хотите однозначно управлять анимациями (не советую, но вдруг) - нужно в аниматоре завести параметр, по которому будет производится переход в состояние без анимации и назад.Это извращенная практика, но возможная.


У меня просто длинная анимационная дорожка, на которой записаны все анимации сразу. Поэтому выборка в скрипте была бы как весьма кстати. Также хотелось бы научиться управлять скоростью анимации, например, превращая ходьбу в бег по нажатию shift'а. Хотя для бега лучше заготовить отдельную анимацию, но на первых порах сойдет.

Каким образом может быть осуществлен данный контроль?

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 21 янв 2016, 22:35
Unitis
Ну, частично вопрос решен. Можно перетащить одну и ту же анимацию в clips а затем задать диапазон проигрывающихся кадров. Правда это немного кривенький способ. Обычно анимация разбита на отдельные фрагменты( судя по ассетам что я видел). Насколько мне известно в юнити резать дорожку нельзя, а если так, то нужно заранее разбить анимацию прежде экспорта готовых моделей.

Да, и проигрывать конкретную аниму оказалось возможно с функцией play. Правда хотелось бы чуть больше гибкости.

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 21 янв 2016, 22:42
samana
Unitis писал(а):Насколько мне известно в юнити резать дорожку нельзя, а если так, то нужно заранее разбить анимацию прежде экспорта готовых моделей.

Это не так. При импорте анимации, можно разрезать её на необходимое кол-во клипов. То-есть вы как бы импортируете одну анимацию где персонаж делает все возможные движения, а в Unity уже разбиваете эту анимацию на клипы для своего удобства.

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 21 янв 2016, 23:02
Unitis
samana писал(а):Это не так. При импорте анимации, можно разрезать её на необходимое кол-во клипов. То-есть вы как бы импортируете одну анимацию где персонаж делает все возможные движения, а в Unity уже разбиваете эту анимацию на клипы для своего удобства.


Вероятно это очевидно, но можно узнать "как"? Я загружаю готовую модель fbx с одной анимацией. Как разбивать пока на глаза не попадалось.

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 21 янв 2016, 23:09
samana

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 22 янв 2016, 20:32
Unitis
Спасибо всем за помощь. Потихоньку дела движутся вперед.

Обнаружил функцию CrossFade() для переключения анимации(для аниматора она тоже есть? Интересно выходит... :-? ). Второй параметр - это видимо время перехода из одной анимации в другую. Насколько плавно он работает? Пытаюсь сейчас обойтись без конструкторских схем. Всё из скрипта. :)

Вообще, честно сказать, ещё пока что не оценил преимущество выстраивания визуальных конструкций. Из кода по-моему всё проще и лаже быстрее делается. А контроль над анимацией заметно гибче.

Re: Как управлять анимацией? Компонент Animator...

СообщениеДобавлено: 22 янв 2016, 20:38
samana
Unitis писал(а):Обнаружил функцию CrossFade() для переключения анимации(для аниматора она тоже есть? )

Да, конечно http://docs.unity3d.com/ScriptReference ... sFade.html

Unitis писал(а):Насколько плавно он работает?

Вроде там линейная интерполяция, или как там называется точно не уверен. То-есть одно значение линейно переходит в другое за заданное время.