анимация для персонажа для unity3d

Скриптинг анимации (Legacy)

Система анимации в Unity позволяет создавать великолепно анимированных персонажей. Она поддерживает блендинг, микширование, сложение анимаций, синхронизацию цикла ходьбы, анимационные слои, контроль всех аспектов проигрывания (время, скорость, веса блендинга), скиннинг мешей с 1, 2 или 4 костями на вершину, а также основанные на физике rag-dolls (тряпичные куклы) и процедурную анимацию. Для получения лучших результатов, рекомендуется почитать о практических подходах и принципах создания персонажей с оптимальной производительностью в Unity на странице Моделирование оптимизированных персонажей.

Вы можете попробовать примеры показывающие готовую анимацию персонажей. Чуть позже, когда вы освоите базовые вещи, можете взглянуть на описание класса Animation.

Смешивание анимации

В современных играх, смешивание анимации является необходимой функцией для обеспечения персонажа плавными анимациями. Аниматоры создают отдельные анимации, например, цикл ходьбы, цикл бега, анимация в состоянии покоя или стрельбы. В любой момент во время игры, должна быть возможность перехода с анимации спокойствия в цикл ходьбы и обратно. Естественно, вы хотите чтобы этот переход был плавным и без внезапных рывков в движении.

В этом случае смешивание анимации становится полезным. В Unity можно иметь любое количество анимаций, которые проигрываются на одном и том же персонаже. Все анимации смешиваются или складываются вместе для создания окончательной анимации.

Наш первый скрипт для анимации персонажа довольно простой; нам нужен способ для определения скорости движения персонажа, а после этого делать переход между анимациями ходьбы и покоя. Для этого простого теста мы будем использовать стандартные оси ввода:-

Чтобы использовать этот скрипт в вашем проекте:-

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

Слои анимации

Слои это невероятно полезная концепция, позволяющая классифицировать анимацию и приоритезировать веса.

Веса смешивания всегда нормализуются перед применением

Предположим, что у вас есть цикл ходьбы и цикл бега, имеющие веса, равные 1 (100%). Когда Unity генерирует окончательную анимацию, веса нормализуются, то есть вклад цикла ходьбы составит 50% анимации, и вклад цикла бега также составит 50%.

Типично, вам захочется указать, какая анимация получает больший вес, когда проигрывается две анимации. Конечно, можно вручную убедиться, что веса суммируются в 100%, но легче просто использовать для этого слои.

Пример использования слоев

Самый простой способ добиться этого, это просто продолжать проигрывание анимаций ходьбы и покой во время стрельбы. Чтобы это сделать, нам надо удостовериться, что анимация стрельбы находится в верхнем слое над анимациями покоя и ходьбы, что означает, что анимация стрельбы будет получать веса смешивания в первую очередь. Анимации ходьбы и покой будут получать веса только если анимация стрельбы не использует все 100% веса. Так, когда начинается переход в анимацию стрельбы, вес начнется с нуля, и за короткое время станет 100%. Вначале, слой ходьбы и покоя все еще будет получать веса, но когда полностью закончится переход в анимацию стрельбы – они не получат веса вообще. И это в точности то, что нам нужно!

По умолчанию, animation.Play() и animation.CrossFade() остановят или плавно уберут анимации находящиеся в одном том же слое. Это то что требуется в большинстве случаев. В нашем примере стрельбы, покоя и бега, проигрывание покоя и бега не будет влиять на анимацию стрельбы, и наоборот (если требуется, то это поведение можно изменить опциональным параметром функции animation.CrossFade).

Смешивание анимаций

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

Добавление трансформации смешивания анимаций производится вызовом метода AddMixingTransform() имеющегося AnimationState.

Пример смешивания

Другой пример с использованием путей.

Аддитивные (additive) анимации

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

Предположим, вам захотелось создать персонажа, который наклоняется в стороны во время поворотов, когда он ходит или бегает. Это приводит к 4 комбинациям (идти-наклоняться-влево, идти-наклоняться-вправо, бежать-наклоняться-влево, бежать-наклоняться-вправо), для каждой из которых нужна анимация. Создание отдельной анимации на каждую комбинацию, очевидно, ведет к множеству дополнительной работы, даже в таком простом случае. Но количество комбинаций увеличивается с каждым добавляемым действием. К счастью, аддитивные анимации и смешивание позволяет избежать необходимости создания отдельных анимаций для комбинаций простых движений.

Пример аддитивной анимации

Аддитивные анимации позволяют накладывать эффекты одной анимации поверх любых других запущенных анимаций. Когда генерируются аддитивные анимации, Unity вычислит разницу между первым и текущим кадрами анимационного клипа. Затем разница применится поверх всех остальных проигрываемых анимаций.

Ссылаясь на предыдущий пример, вы могли бы создать анимации для наклонов вправо и влево, и Unity смог бы наложить их на цикл ходьбы, покоя или бега. Это может быть достигнуто с помощью кода следующим образом:-

Совет: При использовании аддитивных анимаций, очень важно также проигрывать какие-то другие не-аддитивные анимации на каждой трансформации, которая также используется в аддитивной анимации. В противном случае, анимации будут добавляться поверх результата последнего кадра. Это точно не то, что вам нужно.

Процедурная анимация персонажей

Иногда вам понадобится анимировать кости вашего персонажа процедурно. Например, вы хотите чтобы голова вашего персонажа смотрела в определенную точку в 3D пространстве. Это действие лучше всего реализовать с помощью скрипта, который отслеживает целевую точку. К счастью, Unity делает это очень простой задачей, так как кости всего лишь являются трансформациями, которые управляют кожей (skinned mesh). Вы можете управлять костями персонажа из скрипта так же, как трансформациями GameObject.

Тряпичные куклы (Ragdolls) создаются таким же способом. Вам просто требуется добавить компоненты Rigidbody, Character Joint и Capsule Collider к различным костям. Это позволит вам создать анимацию вашего персонажа основанную на физике.

Воспроизведение и cэмплирование анимации

Этот раздел рассказывает о том как в Unity происходит сэмплирование анимации во время ее воспроизведения движком.

Анимационные клипы обычно являются фиксированными по частоте кадров. Например, вы можете создать анимацию в 3ds Max или Maya с частотой 60 кадров в секунду (FPS). При импорте анимации в Unity, частота кадров будет прочитана импортером, так что данные импортируемой анимации также будут 60 кадров в секунду (FPS).

Игры обычно работают с переменной частотой кадров. Частота кадров на вашем компьютере может быть выше, чем на других, и также может меняться из-за сложности отрисовки объектов в поле зрения камеры. В основном, это означает, что мы не можем сделать никаких предположений, с какой частотой кадров будет работать игра. Это значит, что даже если анимация создавалась для 60 кадров в секунду, она может быть воспроизведена на другой частоте кадров – например, 56.72, или 83.14 кадров в секунду, или любой другой.

В результате, Unity должен сэмплировать анимацию с различной частотой кадров, и не может гарантировать частоту кадров, для которой анимация создавалась. К счастью, анимации для 3D графики состоят не из дискретных кадров, а из непрерывных кривых. Так что, если игра выдает большую частоту кадров, чем частота кадров анимации, анимация будет выглядеть плавнее в игре, чем она выглядела в анимационном ПО.

Источник

Анимация в Unity для чайников — проблемы и решения

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

Для этого фестиваля я неспешно делаю в одиночку 2D-платформер по одной из своих завалявшихся идей. И да, здесь опять анимация, но на этот раз не трехмерная, а спрайт-шитовая. Как оказалось, хоть статья была написана давненько, а проблемы все еще актуальны. И теперь я могу дополнить ее еще и пунктом для спрайтовой анимации.

— полезна тем, кто только начинает работать с анимацией в Unity;

— довольно бесполезна для опытных разработчиков, хотя мне было бы приятно получить от них фидбэк;

— совершенно не нужна тем, кто не имеет ничего общего с Unity и Mecanim. Разве что они хотят почитать про Mixamo.

Если кто не в курсе, Mixamo — это облачная служба автоматического риггинга и банк персонажей и анимаций, а Fuse — это приложение для создания гуманоидных моделей (редактор типа как в Sims), которые потом можно анимировать через Mixamo. К сожалению, в 2015 году все это купила Adobe, которая полностью забила на дальнейшее развитие этих продуктов и прикрутила Fuse к своему Creative Cloud. Что примечательно, все это сейчас совершенно бесплатно — бери не хочу, только зарегайся в Adobe и поставь себе кучу их ненужных сервисов.

Я покажу две кнопочки на Mixamo, которые нам помогли ускорить закачку всего этого добра. Первая из них — в форме черепушки — снимает скин с предпросмотра, позволяя значительно повысить производительность сервиса и предотвратить его падения.

Вторая полезная фишка — в окошечке загрузки, это возможность не загружать скин (модельку), а скачать только анимацию, уменьшив вес загрузки раз в 10. Таким образом, вам нужно только одну анимацию скачать с моделью (with skin, не забудьте пометить как-нибудь этот fbx, чтобы в юнити проще было его найти), а все остальные можно оставить без нее.

Хорошо, модельки и анимации у нас есть, только при импорте в Unity все текстуры куда-то пропали. Что делать? Про магию импорта моделек из Mixamo хорошо рассказывается здесь: https://www.youtube.com/watch?v=xOeodlLTx8g

А на скриншоте ниже показаны две волшебные кнопки, которые и достают текстуры и материалы из моделек (здесь и далее версия Unity 2017.4.0f1).

И не удивляйтесь, если у вас получаются вот такие ресницы:

А дальше мы переходим к самому интересному…

Корень всех проблем, как обычно, заключался в том, что мы успели совершенно забыть даже то немногое, что знали про Mecanim ранее, и начинали практически с нуля. В общем, вот вам список проблем, над которыми нам пришлось помучаться.

Проблема 1: как зациклить анимацию (например, ходьба или idle). Или же наоборот, не зацикливать. Мы помнили, что где-то этот флажок был, но проискали его целый вечер. Вот он:

Проблема 2: как прервать анимацию другой анимацией. Например, как запустить анимацию выстрела в момент нажатия кнопки игроком, не дожидаясь окончания 4-х-минутного айдла «я-держу-ружье». А по умолчанию Unity делает именно это. Когда вы создаете переход, ему автоматически ставится флажок Has exit time — это значит, что переход между анимациями начнется тогда, когда первая анимация подойдет к концу. Если нужен переход в момент триггера, просто снимите этот флажок.

Проблема 3: как задать нужный момент в анимации. Например: вот у вас есть анимация «бью-мечом». Она состоит из замаха, собственно момента поражения врага и возвращения меча на место. Любая анимация какой-либо атаки строится по этому принципу. Как определить момент, в который нужно сделать проверку попадания и вычесть хиты? А точнее, как это сделать лучше и правильней? Потому что для этого есть как минимум три способа:

Проблема 4: состояние смерти. Trigger vs bool. Триггер, если кто опять не в курсе, это такой bool-параметр анимации, который сам выключается где-то там после запуска этой анимации. Очень удобно использовать для запуска тех же анимаций атаки. Когда именно он выключается и что там потом происходит — этого никто не знает. И в этом кроется огромная проблема. У нас персонажи после проигрывания анимации смерти по триггеру снова возвращались в idle-состояние. И происходило это даже тогда, когда уже было полностью исключено как в коде, так и в аниматоре (см. скриншот). Так и не выяснив причину, мы решили поменять тип параметра на bool. И столкнулись с еще одной неприятной проблемой: персонажи зависали в начале анимации смерти и дальше не продвигались. Происходило это от того, что анимация смерти все время переходила сама в себя. Как оказалось, это лечится простым флажком:

Проблема 5 (для классических спрайтовых анимаций):

И вот в очередной раз принимаемся за анимацию главного персонажа, вроде бы все на месте, но откуда-то возникают задержки (заметите на гифке?)

Оказалось, что проблема в длительности переходов. По умолчанию юнити делает плавные переходы между анимациями, для костевых и параметрических анимаций это подойдет, но для спрайт-шитов это ни разу не нужно. После зануления длительностей переходов сразу стало видно, что не так в машине анимаций, и я смогла ее довести до приемлемого состояния. (На скриншоте в этот раз Unity 2019.2)

Как обрабатывать анимацию, в которую зашито движение (root motion). Благо, большинство анимаций Mixamo имеют флажок In place, который отключает рут-моушн. Но что делать, если вам хочется использовать в игре подобную анимацию, а возможности убрать у нее перемещение нет? Как отключить его или хотя бы скормить это перемещение navmesh-агенту — мы так и не придумали. Поэтому неписи в нашей игре прыгают от врагов, а потом оказываются в начальной точке, и все это выглядит так, будто они телепортируются вокруг зомби (в целом довольно сносно:)) Если кто сможет предложить иное решение, помимо «не использовать анимации с вшитым движением» — welcome, очень жду. И да, на флажок enable root motion в компоненте аниматора мы пробовали нажимать:)

Источник

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

Наверняка многим кажется достаточно сложным процесс создания и введения в проект анимированной модели персонажа. В этой статье мы хотим затронуть тему импорта 3D модели персонажа в Unity3D, его подготовку, импорт анимаций, настройку аниматора и простейший контроллер, который будет управлять движениями и анимацией персонажа.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

И импортируем в проект:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Открываем в окне Project папку с персонажем, находим его модель, переносим в сцену.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Поскольку это модель из магазина AssetStore, она полностью настроена и готова к введению в игру. Тем не менее, важно убедиться, что всё настроено верно:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

2. Во вкладке Animation у данной модели нет собственных анимационных клипов. Именно поэтому мы возьмем их с сайта mixamo.com:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Эти анимации можно свободно скачать, что мы и сделаем сейчас.

Humanoid – анимации легко можно использовать на любых Humanoid – персонажах. Поэтому не важно, создадите ли Вы свою анимацию или скачаете готовую – любой из вариантов будет работать с Humanoid – персонажем.

Я подготовил вот такой сет анимаций. Он включает в себя:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Обязательно выберите все файлы с анимациями и во вкладке Rig переключите их в режим Humanoid:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Пора настроить импорт каждой анимации в проект. Выделяем,например, walking и переходим во вкладку Animation:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

1.Назначаем ключи старта и окончания анимации (поскольку каждый файл анимации идет отдельным файлом, обычно эти ключи автоматически стоят верно).

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

3.Устанавливаем галочку LoopTime- этот включенный параметр зацикливает анимацию при воспроизведении.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Аналогичным образом настраиваем остальные анимации. Не забываем нажимать Apply для того чтобы применить все изменения анимационного клипа.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Теперь в сцене выделим персонажа. Давайте посмотрим на компонент Animator, который присутствует на нем. Нам важны два поля:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Если Вы всё делаете, как и я – проблем с аватаром возникнуть не должно.

2. Controller – Это то, с чем мы и будем работать дальше. Анимационный контроллер – это своего рода схема, в которой мы определим, как именно воспроизводятся анимации, в каком состоянии какие из анимаций смешиваются друг с другом. Если сказать проще, то именно в контроллер мы будем отправлять сигнал о том, какая анимация должна воспроизводиться в данный момент. Но обо всём по порядку.

Давайте создадим анимационный контроллер: Правой кнопкой мыши кликаем в окне проекта. Create – Animator Controller.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Получится вот такой файл, я назвал его PersonAnimatorController:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Кликаем по нему дважды, откроется вкладка Animator:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Это и есть окно, в котором мы установим алгоритм работы наших анимаций. Давайте сразу создадим 3 состояния (ПКМ – Create State – Empty):

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Выделив одно из состояний (например, idle), в окне Inspector мы можем заметить, что поле Motion сейчас пустое. Сюда необходимо поместить анимационный клип (тот, которому мы настраивали ключи Start-End, устанавливали Loop pose, и т.д.).

Поэтому, не снимая выделение с выделенного элемента, в окне Project находим файл с анимацией Idle, и из него перетаскиваем АНИМАЦИОННЫЙ КЛИП в поле Motion в окне инспектора.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Таким же образом устанавливаем клипы в остальные состояния (walk, run).

Теперь в левой части окна Animator переходим во вкладку Parameters:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Создаем Int – параметр, назовем его “state”. Это переменная, которая будет определять, в каком состоянии сейчас находится аниматор персонажа (какое из наших трёх состояний воспроизводится в данный момент). Этим параметром в будущем мы будем управлять из скрипта.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Теперь необходимо создать переходы между состояниями.

Кликаем на Idle правой кнопкой, жмем на Make Transition, после чего наводим курсор на состояние Walk.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Сразу сделаем переходы между всеми состояниями, и туда, и обратно.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Теперь переходим к настройке каждого перехода. Первый переход:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Выделяем его, смотрим в правую часть окна Animator:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Has Exit Time – снимаем галочку. Этот параметр, при включенном состоянии, сначала ждет, пока текущая анимация отыграет полностью, а уже после – совершает переход в другое состояние. Нам это не нужно, т.к. переходы у нас будут в конкретные моменты, когда наша переменная state меняет своё значение.

В Conditions добавляем условие перехода:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Дословно это выглядит так: “Если state = 0”. Если представить это в виде кода:

То есть, выбранный переход сработает в том случае, когда значение state будет равно “1”.

Обратный переход из Walk в Idle настраиваем так (не забываем во всех переходах отключать Has Exit Time):

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

По аналогии, нужно сделать переходы:

Idle – Run (state equals 2)

Run – Idle (state equals 0)

Walk – run (state equals 2)

Run – Walk (state equals 1)

Не забудьте выделить персонажа в сцене и переместить созданный анимационный контроллер в поле Controller в компоненте Animator:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Теперь, если запустить игру и, выделив персонажа, в окне аниматора поменять значение state, мы увидим, что анимации воспроизводятся:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Вы можете заметить, что персонаж немного смещается и разворачивается. Это происходит, потому что мы не настроили смещение и поворот за счёт анимации. Делается это в окне импорта каждого файла анимации, во вкладке Animation. Обычно я настраиваю анимации так, чтобы они никак не влияли на перемещение или поворот. Установите флажок во всех опциях Bake Into Pose.

А так же Based Upon в Original.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Теперь создадим скрипт, чтобы управлять анимациями персонажа по нажатию на клавиши.

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Называем его PersonController. Перетяните скрипт на персонажа, чтобы он отобразился в списке компонентов под компонентом Animator:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Открываем скрипт. Пишем код:

анимация для персонажа для unity3d. Смотреть фото анимация для персонажа для unity3d. Смотреть картинку анимация для персонажа для unity3d. Картинка про анимация для персонажа для unity3d. Фото анимация для персонажа для unity3d

Теперь, если запустить игру, персонаж начнет реагировать на нажатия на клавиши.

На этом пока всё. Это базовый механизм настройки персонажа, аниматора, и простой способ воспроизвести анимации. На основе этого принципа можно анимировать многие игровые объекты, не только персонажей. Но для того, чтобы сделать качественное смешивание анимаций и не превратить Анимационный контроллер в мешанину из огромной кучи состояний и переменных, которыми сложно управлять, когда их много – существуют очень удобные инструменты смешивания в Animator (BlendTree), а так же возможность создать машину состояний внутри одного состояния. Но об мы расскажем в отдельной статье.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *