unity 2d анимация движения персонажа

Как заставить персонажа двигаться в Unity 2d

В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

На нашей сцене уже имеется заготовка персонажа с анимацией, добавим к ней компоненты Box Collider 2d и Rigidbody 2d и настроим компонент так как на скриншоте

unity 2d анимация движения персонажа. rogibody2d. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-rogibody2d. картинка unity 2d анимация движения персонажа. картинка rogibody2d. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Далее создадим скрипт к примеру TransformPlayer с таким кодом:

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

Далее, как токового движения вперед у нас не реализовано, но симуляцию движения можно реализовать при помощи фоновых объектов.

Добавим на сцену спрайты земли и продублируем 4 раза, на каждый компонент вешаем те же компоненты Box Collider 2d и Rigidbody 2d, создадим еще один скрипт TransformGround

unity 2d анимация движения персонажа. ground. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-ground. картинка unity 2d анимация движения персонажа. картинка ground. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь подробнее… Создадим на камере два пустых объекта, один разместим слева и добавим Box Collider 2d и Rigidbody 2d, так же присвоим ему тэг, который указали в скрипте barer, а другой справа. Примерно так…

unity 2d анимация движения персонажа. gameobject. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-gameobject. картинка unity 2d анимация движения персонажа. картинка gameobject. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

На объектах «земли» укажем этот объект который справа.

Теперь можно поверить запустив игру

unity 2d анимация движения персонажа. transformrigibodi. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-transformrigibodi. картинка unity 2d анимация движения персонажа. картинка transformrigibodi. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Птица управляется, движение земли создает эффект движения птицы. В следующих уроках можно реализовать рандомное появление объектов на сцене и столкновение персонажа с ними. На это все удачных проектов.

Источник

Быстрая и эффективная 2D-анимация

Откройте для себя скелетную 2D-анимацию в Unity.

unity 2d анимация движения персонажа. unity artist designer tools scene 2D animation 0. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-unity artist designer tools scene 2D animation 0. картинка unity 2d анимация движения персонажа. картинка unity artist designer tools scene 2D animation 0. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Создавайте плавную скелетную анимацию напрямую в Sprite Editor с помощью риггинга, тесселяции и создания костей. Воспользуйтесь PSD Importer, чтобы импортировать части персонажей напрямую из многослойной графики, и анимируйте их с помощью опорных кадров или кривых во временной шкале воспроизведения анимации. 2D Inverse Kinematics (IK) упрощает процесс анимации, автоматически рассчитывая положение костей и вращение, необходимое для достижения целевого положения.

Зачем использовать 2D-анимацию

unity 2d анимация движения персонажа. Save time. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-Save time. картинка unity 2d анимация движения персонажа. картинка Save time. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Экономить время

С помощью основанной на использовании костей системы 2D-анимации вы сможете повторно использовать спрайты, чтобы оживлять персонажей, изменять частоту обновления кадров или мгновенно изменять анимацию. Экономьте время, импортируя многоуровневые изображения с помощью PSD Importer, ведь так вам не придется экспортировать спрайты по одному и пересобирать детали.

unity 2d анимация движения персонажа. 2d animation unity smooth 0. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-2d animation unity smooth 0. картинка unity 2d анимация движения персонажа. картинка 2d animation unity smooth 0. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Плавная и адаптируемая анимация

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

unity 2d анимация движения персонажа. More animation fewer assets. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-More animation fewer assets. картинка unity 2d анимация движения персонажа. картинка More animation fewer assets. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Большее анимаций при меньшем количестве ассетов

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

Основные характеристики

Создание мешей и костей

Sprite Editor позволяет автоматически или вручную создавать меши для ваших спрайтов, устанавливать иерархию костей и задавать их вес в вершинах мешей.

Нативные решения для всех платформ

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

Инструменты анимации

Создавайте анимацию прямо в окне Scene с помощью окна Dopesheet или кривых анимации и запускайте события. Используйте Animator для управления переходами анимации или Timeline для создания кат-сцен из нескольких анимационных клипов. Система частиц добавляет эффекты или 2D-физику, что делает поведение персонажей более реалистичным.

Атлас спрайтов

Объединяет несколько текстур в одну, что сокращает количество вызовов отрисовки и оптимизирует производительность. Добавьте своих анимированных в 2D персонажей и прочие элементы в один атлас. Вы сами можете определять, как упаковывать текстуры, задавая конфигурации для каждой платформы. API дает вам полный контроль над этим инструментом.

Продвинутые функции и API

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

Новые возможности графики

Улучшите своих 2D-персонажей с помощью новой системы 2D-освещения для объемных эффектов с картами нормалей, инструмента Shader Graph, позволяющего создавать шейдеры в графическом интерфейсе, или Burst, значительно повышающего производительность.

Источник

Как сделать 2D-анимацию в Unity с минимумом кода: кадры и скрипты

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

unity 2d анимация движения персонажа. ba54ea0c276ba31bf645538aaae567d9. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-ba54ea0c276ba31bf645538aaae567d9. картинка unity 2d анимация движения персонажа. картинка ba54ea0c276ba31bf645538aaae567d9. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

unity 2d анимация движения персонажа. a20f1763eeba394ae29558279b5204d7. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-a20f1763eeba394ae29558279b5204d7. картинка unity 2d анимация движения персонажа. картинка a20f1763eeba394ae29558279b5204d7. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Что можно анимировать в Unity

Анимация позволяет оживить игру даже с самой примитивной графикой. Например, персонаж для игры из этой статьи выглядит вот так:

unity 2d анимация движения персонажа. 6d5301ccbf296fdbb6e2c63f10a4b7a94f122c1e. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-6d5301ccbf296fdbb6e2c63f10a4b7a94f122c1e. картинка unity 2d анимация движения персонажа. картинка 6d5301ccbf296fdbb6e2c63f10a4b7a94f122c1e. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

unity 2d анимация движения персонажа. kucheryaviy. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-kucheryaviy. картинка unity 2d анимация движения персонажа. картинка kucheryaviy. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

В нём нет ничего привлекательного, это набор простых фигур. Посмотрите, как он изменится, если добавить анимацию:

unity 2d анимация движения персонажа. 4f743d20093ec31ee2e67dd2ba0d71d41fb91d44. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-4f743d20093ec31ee2e67dd2ba0d71d41fb91d44. картинка unity 2d анимация движения персонажа. картинка 4f743d20093ec31ee2e67dd2ba0d71d41fb91d44. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

С помощью анимации можно оживить и фоны. Например, сделать:

Анимацию добавляют и в интерфейсы: переливающиеся шкалы здоровья, поблёскивающие кнопки. Даже вращающаяся шестерёнка вместо простой надписи «Загрузка…» украсит проект.

unity 2d анимация движения персонажа. b8b7d44ba7603440ccd92750c774d664b9edd6be. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-b8b7d44ba7603440ccd92750c774d664b9edd6be. картинка unity 2d анимация движения персонажа. картинка b8b7d44ba7603440ccd92750c774d664b9edd6be. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Мини-игра к этой статье и все ассеты выложены в репозитории на GitHub. Если хотите научиться делать игры с нуля, рекомендуем записаться на курс «Профессия разработчик игр на Unity».

Анимация «из коробки» в Unity

В Unity создают анимацию с помощью:

Скрипт изменяет параметры объекта при определённых условиях: обновлении масштабов, добавлении цвета и так далее.

Что-то более продвинутое делается с помощью покадровой анимации — когда для разных состояний объекта (стоит, идёт, в прыжке, атакует) создаётся несколько спрайтов (двумерных изображений), которые сменяют друг друга с определённым интервалом.

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

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

Анимация вращения с помощью скрипта в Unity

Когда вы создаёте персонажа и добавляете ему спрайт, а потом управляете им, герой всегда смотрит в одну и ту же сторону, даже если движется в другую.

Исправить, создав отзеркаленную версию спрайтов, — не лучший вариант, потому что придётся делать лишнюю работу. Правильнее написать скрипт, который вращает объект.

Источник

Основы создания 2D персонажа в Unity 3D 4.3. Часть 2: бегущий персонаж

Всем привет. Продолжаем дело, начатое в первой части. Сейчас у нас есть платформа и стоящий на ней персонаж с анимацией покоя. Настало время научить нашего персонажа бегать вправо-влево по платформе.

Загрузим сцену из первой части. Напомню, что в прошлый раз мы импортировали несколько спрайтов в папку AssetsSprites. На всякий случай, внизу поста еще раз приведу ссылку на спрайты. Среди них должен быть спрайт под названием Run. Мы будем использовать его для создания анимации бега. Для этого нам надо проделать те же действия по превращению одиночного спрайта в коллекцию, как и при создании анимации покоя. Вкратце напомню: выделяем спрайт, в окне Inspector устанавливаем свойство Sprite Mode как Multiple, нажимаем ниже Sprite Editor, нарезаем изображение в режиме Grid или Automatic.

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь в окне Hierarchy выбираем Character и переходим в окно Animation. Нажимаем на поле с анимацией Idle и выбираем Create New Clip, чтобы создать анимацию бега. Сохраним файл анимации в папке AssetsAnimations под именем Run.

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Новая созданная анимация Run стала текущей в окне Animation. Разворачиваем спрайт Run в окне Project, выделяем все фалы Run_0… Run_9 и перетаскиваем в окно Animation. Установим пока значение Sample равное 24.

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Все это мы уже делали в первой части, а теперь будет нечто новое. Перейдем в окно Animator. Сейчас там отображены три анимации: Any State, Idle и Run. Нам предстоит задать условия перехода из анимации Idle в анимацию Run, то есть из состояния покоя в состояние бега. В нижнем левом углу есть поле Parameters. Нажимаем на плюсик, выбираем Float и называем новый параметр как Speed. Тем самым мы создали параметр типа число с плавающей запятой, обозначающий скорость перемещения персонажа. Именно в зависимости от значения этого параметра будет происходить переключение из анимации покоя в анимацию бега. Теперь нажимаем правой кнопкой мыши на анимацию Idle, выбираем Make Transition и нажимаем левой кнопкой мыши на анимацию Run. Между анимациями появится линия со стрелкой. Передвиньте мышкой прямоугольники анимации, если плохо видно. Кликнем по линии со стрелкой. В окне Inspector отобразятся свойства перехода между анимациями. Обратим внимание на низ окна, в раздел Conditions. Кликнем на параметр Exit Time и поменяем его на Speed. Второе поле Greater оставим без изменений, а в третьем введем значение 0.01. Мы создали условие перехода из анимации покоя в анимацию бега — оно происходит, когда значение параметра скорости становится немногим больше нуля.

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь нужно сделать обратный переход — из Run в Idle. Делаем все с точностью наоборот: Make Transition от Run к Idle, выделяем переход, в Conditions устанавливаем SpeedLess0.01.

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь у нас есть две анимации и условия перехода между ними. Но пока ничего работать не будет, потому что все что мы сделали нужно «оживить» при помощи скрипта. Давайте перейдем в окно Project и создадим в папке Assets подпапку Scripts. Добавим в нее новый C# Script, назовем его CharacterControllerScript и откроем на редактирование.

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Я приведу полный листинг скрипта с подробными комментариями, а ниже еще поясню, что в нем происходит.

Итак, мы завели несколько переменных: для задания максимальной скорости перемещения, для определения направления (вправо/влево) и для работы с компонентом Animator. Почти все действия происходят в методе FixedUpdate. В нем мы получаем значение оси Х, которое меняется при нажатии на клавиатуре клавиш влево-вправо или A-D (если не меняли соответствующие настройки проекта!). Затем устанавливаем это значение параметру Speed компонента Animator. Обратите внимание, что мы берем модуль этого значения при помощи метода Mathf.Abs, так как при создании условий перехода между анимациями покоя и бега мы сравниваем значение параметра с положительным числом 0.01. Нам здесь не важно, в какую сторону бежит персонаж. Важно лишь величина значения. Далее задаем скорость перемещения по оси Х в соответствии со значением максимальной скорости. И, наконец, проверяем, в какую сторону бежит персонаж, и в какую сторону он в этот момент повернут. Если он бежит вправо, а повернут влево — разворачиваем его вправо путем инвертирования его размера по оси Х. И наоборот. Этим нехитрым способом мы избавились от необходимости делать две анимации вместо одной: для бега вправо и для бега влево.

Сохраняем скрипт. В Unity перетаскиваем его на нашего Character в окне Hierarchy. Запускаем игру, нажимаем влево-вправо или A-D.

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Капитан Коготь теперь умеет бегать! Скорость анимации получилась быстроватой. Ее можно снизить путем уменьшения значения Sample в окне Animation для анимации Run (значение 12 будет нормально). Если одновременно с игрой у вас видно окно Animator, то вы увидите, что во время покоя работает анимация Idle (бегает синий прогрессбар), а во время бега происходит переход на анимацию Run, и, соответственно, работает она.

На этом пока все. Нам осталось разобраться с прыжками… и узнать при этом еще несколько новых вещей!
Ссылка на спрайты.

Источник

Создание игры на ваших глазах — часть 7: 2D-анимации в Unity («как во флэше»)

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».В этой статье поговорим о 2D анимациях в Unity. Я расскажу о своем опыте работы с родными анимациями в юнити, о том, насколько тайм-лайны похожи на флэшевские, об управлении анимациями, event’ах, вложенности, и о том, как художник справляется с анимированием.

Для начала, немного теории.

В Unity есть две сущности:

1. Анимация (то, что отображается в окно «Animation»)
2. Mechanim дерево анимаций (то, что отображается в окне «Animator»).

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Ниже я немного расскажу, что это такое и как нам может приходиться (или не пригодиться).

Animation

Итак, анимация. По сути — это таймлайн с ключевыми кадрами. Здесь вы можете двигать, поворачивать, масштабировать ваши объекты. Естественно, можно рисовать кривые и пользоваться разными изингами. И даже управлять любыми (в т.ч. самописными) их свойствами. То есть вполне можно написать компонент с float паблик-значением «яркость» и эту самую «яркость» анимировать наравне с x, y, z штатными средствами. Спрайты поддерживают покадровую анимацию.

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Кстати, несмотря на то, что у каждой анимации есть FPS (поле «sample»), сами анимации к FPS не привязаны. Они привязаны ко времени. Т.е. если вы делаете анимацию с 5 FPS, где у вас объект двигается из точки А в точку Б с помощью задания двух ключевых кадров в начале и в конце, то в игре этот объект не будет двигаться ступеньками с 5 FPS. Анимация рассчитывается каждый кадр игры, а FPS внутри анимации сделан лишь для вашего удобства, чтобы вам не частить кадры.

Animator

Это — большая и сложная система, которая непосредственно управляет анимациями. То есть анимация — это просто файл (ресурс) с настройками ключевых кадров и сама по себе ничего не умеет. Вот именно компонент «Animator» — это то, что умеет играть эти анимации.

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

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

то есть содержать одну-единственную анимацию и никаких связей/переходов.

Начинаем шаманить.

Пока все понятно. Но давайте подумаем, как сделать что-то чуть более сложное?

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

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Далее, мы хотим сделать такую анимацию:

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

1. сугроб, шевелясь, двигается влево
2. из сугроба выглядывает заяц (анимация пульсации останавливается):
unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».
3. сугроб двигается вправо

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

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

Хотелось бы большей гибкости.

Есть другой вариант. Мы анимируем выглядывание зайца в отдельном объекте (так же, как мы сделали это с шевелением сугроба), а в основном тайм-лайне просто включаем этот объект (active) в нужный момент и анимация начинается.

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

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

То есть сделать так:

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

Что нам для этого понадобится? Unity позволяет добавлять на анимацию вызов кастомных юзер event’ов. Это именно то, что нам нужно! Осталось только правильно все написать.

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

Где _animator — это переменная, в которой мы закешировали компонент » Animator «:

Если вы обратили внимание на скрин выше, над ключевым кадром, который я пометил цифрой «2» стоит небольшая вертикальная черта. Именно за ней скрывается вызов события (метода) «Pause»:

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Стоит отметить, что в такие события можно даже передавать параметр. Поддерживаются string, float и объект из библиотеки (не со сцены).

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

Этот метод ищет среди родителей компонент » GJAnim » и снимает его с паузы. Соответственно, ставим это событие на окончание анимации нашего кролика:

unity 2d анимация движения персонажа. image loader. unity 2d анимация движения персонажа фото. unity 2d анимация движения персонажа-image loader. картинка unity 2d анимация движения персонажа. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Profit!

Кроме того, все делается в пределах юнитевского UI и достаточно прозрачно для любого аниматора. Наш художник через час попадания ему в руки этого инструмента, уже во всю анимировал.

О багах Unity и сумасшествии.

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

У нас была родительская (главная) анимация, которая показывала один объект (скрывала все остальные), вставала на паузу, в это время в этом объекте начинала проигрываться своя (вложенная) анимация, которая снимала родителя с паузы по окончании. Далее — показывался следующий объект и т.п.

Так вот, мы заметили, что кадры иногда проскакивают.

Долго-долго дебажили, много писали в лог… и вот что выяснили:

По видимому, в юнити есть какой-то стэк кадров/событий анимаций. И когда компьютер (редактор unity) подтормаживает, он может положить в этот стек сразу два кадра, чтобы в следующую итерацию выполнить их оба.

Это влечет за собой чуть ли не полностью неисправимый фейл. Мы ловили ситуацию, когда аниматор выполнял все действия с кадром и вставал на паузу (это ок), а потом в этот же кадр выполнял еще и следующий кадр. То есть за один кадр рассчитывал сразу два кадра анимации. И то, что в 1-м кадре было событие, ставящее скорость анимации в 0, не мешало ему рассчитать еще и следующий кадр, который, по видимому, уже лежал в стеке.

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

На данный момент проблема выглядит неисправимой. Как мы справились? Поставили FPS таких анимаций в 20. Видимо, на таком FPS’е случая, когда юнити хочет просчитать два кадра за одну итерацию — не случается.

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

Источник

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

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