Как сделать 2D-анимацию в Unity с минимумом кода: кадры и скрипты
Инди-играм может не хватать визуальной привлекательности. Разбираемся, как оживить персонажей и фоны с помощью самой простой анимации.
Что можно анимировать в Unity
Анимация позволяет оживить игру даже с самой примитивной графикой. Например, персонаж для игры из этой статьи выглядит вот так:
Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
В нём нет ничего привлекательного, это набор простых фигур. Посмотрите, как он изменится, если добавить анимацию:
Теперь персонаж стал чуть более живым и даже забавным — на него гораздо приятнее смотреть, хотя внешне он не изменился.
С помощью анимации можно оживить и фоны. Например, сделать:
Анимацию добавляют и в интерфейсы: переливающиеся шкалы здоровья, поблёскивающие кнопки. Даже вращающаяся шестерёнка вместо простой надписи «Загрузка…» украсит проект.
Мини-игра к этой статье и все ассеты выложены в репозитории на GitHub. Если хотите научиться делать игры с нуля, рекомендуем записаться на курс «Профессия разработчик игр на Unity».
Анимация «из коробки» в Unity
В Unity создают анимацию с помощью:
Скрипт изменяет параметры объекта при определённых условиях: обновлении масштабов, добавлении цвета и так далее.
Что-то более продвинутое делается с помощью покадровой анимации — когда для разных состояний объекта (стоит, идёт, в прыжке, атакует) создаётся несколько спрайтов (двумерных изображений), которые сменяют друг друга с определённым интервалом.
И чуть более сложное — скелеты. Они позволяют использовать один спрайт, а потом приводить его в движение, изменяя положение отдельных частей.
Мы рассмотрим только скриптовую и покадровую анимацию в Unity, потому что для скелетной требуются специальные ассеты, и она куда сложнее.
Анимация вращения с помощью скрипта в Unity
Когда вы создаёте персонажа и добавляете ему спрайт, а потом управляете им, герой всегда смотрит в одну и ту же сторону, даже если движется в другую.
Исправить, создав отзеркаленную версию спрайтов, — не лучший вариант, потому что придётся делать лишнюю работу. Правильнее написать скрипт, который вращает объект.
Персонаж для юнити 2д
Местные жители используют синие кристаллы для создания защитных полей вокруг своих домов 🎮🏠💎
А ничего что количество аргументов в делегатах разное и оверрайднуть нельзя из-за этого?
Mr_Fog, Спасибо) осенью планируем выпустить новую демку)
Игра просто супер. Спасибо большое за столь интересный и не обычный проект.
Делаем с командой игру.
В этой сцене мы впервые сталкиваемся с потусторонними силами.

Линейка новых скриншотов The Darkest Red 🎮🤺💥🧟🔥







Jusper, Привет!
Так она же давно в релизе уже больше года)
Продолжаем делать наш Unity for dummies платформер.
Полные версии кода будут находиться в конце поста.
Если вы не в курсе, как работают хуки жизненного цикла в Unity, вы можете ознакомиться с данной статьёй.
Создаём в панели ассетов C# cкрипт PlayerBehaviour, и запихиваем его в папку Scripts (её можно создать в той же панели ассетов).
Затем выбираем наш объект Player слева, в меню иерархии, и закрепляем инспектор (меню справа), нажав на замок в верхнем правом углу.
Пока закрываем все ненужные компоненты (Box Collider 2D, etc), нажимая на стрелочку у каждого из них.
Теперь перетаскиваем наш скрипт в инспектор, и он прикрепляется к объекту Player (если вы не выполнили предыдщуий пункт с закрепением меню, то вы этого сделать не сможете).
Если зайти в Edit => Project Settings => Input Manager, то мы можём увидеть настройки управления. Например, прыжок (Jump) назначен на пробел, в то время, как движение по горизонтали назначено на a, d, ←,→.
Запомним это для того, чтобы затем использовать в коде (названия инпутов Jump, Horizontal).
Пора покодить. Два раза нажимаем на наш скрипт PlayerBehaviour, и Unity отдаст его в руки Visual Studio.
Сохраняем файл, и переходим обратно в Unity. После того, как Unity проверит код (линтинг, ошибки, пустые переменные). Если что то неправильно, то вы увидите сообщение об ошибке.
Исправляем код, и страшные красные буквы исчезают. Можно запустить игру, и проверить, как все работает.
Мне не нравится, что персонажа переворачивает. Исправим.
Заходим в инспектор, открываем Rigidbody2D и ставим галочку на Freeze Rotation Z.
Есть два основных способа научить камеру двигаться за персонажем.
1. Подвинуть камеру внутри сцены, чтобы она была на персонаже, а затем в привязать камеру к объекту персонажа через меню иерархии.
2. Задать движение камеры за персонажем програмно.
Создаём скрипт CameraBehaviour, и привязываем его к объекту Main Camera (добавляем через инспектор).
Открываем наш новый скрипт, и начинаем кодить (да, мне на работе не хватает, продолжаю и после).
Фиксируем объект камеры на замок в инспекторе, и перетаскиваем наш объект Player в GameObject.
Теперь камера двигается за игроком.
Однако камера постоянно вылезает за пределы уровня, показывая синий фон.
Я не уверен, что моё решение правильное. Буду рад, если кто-нибудь поделится своими соображениями на данный счёт.
Добавляем в наш скрипт CameraBehaviour следующий код:
Двигаем камеру, и снимаем наши измерения ее положений.
На скрине ниже камера стоит в левом нижнем углу сцены.
Проставляем снятые позиции для камеры (мои и ваши позиции будут отличаться).
Теперь обновим метод UpdateCameraPosition в скрипте CameraBehaviour
Отлично, камера перестала «гулять». Работаем дальше.
Выбираем наш Foreground, и создаём новый слой ‘Ground’ в инспекторе.
Снова тыкаем на Foreground, и выбираем в поле Layer наш только что созданный слой.
Добавим в PlayerBehaviour такую строчку.
Теперь в объекте Player мы можем выбрать наш свежесозданный слой.
Обновляем наш PlayerBehaviour. Добавим коллайдер (rigidBody мы создавали ранее).
Теперь мы можем обновить обработку перемещения персонажа в методе updatePlayerPosition
Летать мы разучились, а по платформе больше не скользим. Победа!
Я не уверен, что моё решение правильное. Буду рад, если кто-нибудь поделится своими соображениями на данный счёт
Привет.
Я, конечно, дохуя вовремя, когда у тебя уже пять статей и рефакторинг, но вот щас иду за тобой пока вот на этом месте.
Короче, в ассет-сторе есть проект 2D Game Kit от разрабов движка. Там движение камеры сделано буквально следующим образом, если помню (давно открывал). Уровень завёрнут в коллайдер, ещё один коллайдер на камере. Соответственно, когда она о него стукается, то расслабляется и не двигается. И ещё там угарный камера-лаг стоит, чтоб камера не жёстко следовала за персонажем, а как бы за верёвочку.
Привет.
Да, я изначально так и пробовал.
Но персонаж, почему-то, попросту исчезает при старте игры.
Попробую ради эксперимента новый проект создать.
Как сделать управление персонажем на Unity 3D и 2D. Уроки Unity для детей
Мы покажем, как запрограммировать движение персонажа в 2D- и 3D-проектах на Unity. Урок будет полезен детям и подросткам, которые начинают изучать Unity.
Разрабатывать игры на движке Unity (Юнити) могут дети уже с 10 лет. Создание игр является очень увлекательным, но трудоемким процессом, который требует много внимания и навыков. Чтобы сделать одну игру, нужно учесть много деталей, в том числе научиться делать управление персонажем на Unity. Школа программирования для детей «Пиксель» подготовила подробный урок о том, как научить персонажа двигаться в 2D- и 3D-играх на Unity. Вы также можете посмотреть видеоинструкцию (в конце статьи).
Начнем урок по Unity с разделения игровой сцены на два компонента, где первый — это площадка, по которой персонаж будет перемещаться. Иначе говоря, это Plane. Второй компонент — объект самого героя, Sphere.
Далее переходим к оживлению объектов. Управление персонажем на Юнити должно быть физически правильным. Обеспечить это позволяет компонент RigidBody. В инспекторе нажимаем Add Component, затем Physics и RigidBody.
Как заставить объекты существовать по своим законам? Именно вы являетесь создателем своего мира и вольны сами задавать ему физику. Проработка этого момента почти полностью лежит на скрипте. Писать его будем с помощью такого языка программирования, как Си Шарп (C#).
Создаем пустой скрипт и прописываем переменные, которые будут отвечать за скорость движения, быстроту поворота, передвижение по вертикали и горизонтали. В нашем случае переменные в Си Шарп будут названы MovementSpeed, TurningSpeed, vertical и horizontal соответственно.
В функции Update прописываем поворот персонажа по оси Y и движение по оси Z.
Остается только сохранить и скомпилировать созданную программу.
При работе в 2D-плоскости обучение на Unity становится немного проще, физика такого мира учитывает меньше физических параметров. Для начала добавим два спрайта, которые отвечают за персонажа и за поверхность, по которой он будет ходить. Наши спрайты вы можете скачать по ссылке.
Персонаж для юнити 2д
Цель клуба – дать участникам группы уникальную базу новых спрайтов, а также объединить мастеров своего дела. Показать полностью.
Работает это так : при подаче заявки на вступление в клуб, пользователь отправляет Мне спрайт, который будет отправлен на стену для общего пользования участниками группы.
Для вступления в клуб Вам необходимо :
— Отправить заявку на вступление в клуб
— Мне (http://vk.com/id198758860) в ЛС отправить архив со своей работой (спрайтами), спрайт может быть любого типа.
Сразу же после приема заявки на вступление в клуб, Ваш спрайт будет отправлен на стену группы для общего пользования участниками группы, спрайт будет указываться с авторством.
Другое
Действия
Группа является не коммерческой, а значит мы ничего из этого не зарабатываем, мы стараемся облегчить людям поиск спрайтов, помочь людям найти необходимые хорошие спрайты.
Так вот и помогите и Вы нам, приглашайте людей знакомых которым действительно интересна разработка, рисование наполнив группу хорошим не только контентом и людьми Вы сможете познакомиться с пользователями у которых с Вами общие интересы / цели, и в дальнейшем развивать деятельность которая будет Вам полезна!
Спасибо, надеюсь на вашу отзывчивость и понимание!
Прием заявок на @gtpindiecup S’21 открыт! Потенциальные конкурсанты уже могут заполнять форму на нашем сайте — прием проектов продлится до 13 июля 2021 года.
С расписанием и правилами Indie Cup S’21 можно ознакомиться на сайте конкурса. Показать полностью. На летнем сезоне будет десять номинаций, включая категорию пользовательского голосования Players’ Choice.
А еще у нас есть несколько анонсов:

Мы открываем конкурс для участников из новых стран. В летнем сезоне 2021 года могут участвовать разработчики из Азербайджана, Армении, Беларуси, Болгарии, Венгрии, Грузии, Казахстана, Кыргызстана, Латвии, Литвы, Молдовы, Монголии, Польши, России, Румынии, Словакии, Таджикистана, Турции, Узбекистана, Украины, Чехии и Эстонии. Это 22 страны!


Коты на экране, критики на потолке и разработчики в прямом эфире — чтобы прийти в себя после дебютной церемонии награждения Indie Cup нам потребовалась неделя. Поэтому мы сделаем ее еще раз!
Indie Cup S’21 проходит при поддержке платиновых спонсоров кубка Kefir и Unreal Engine, золотого спонсора Xsolla, серебряных партнеров 101XP и tinyBuild, а также больше 30 партнеров номинаций и медиа-партнеров.
И это еще не все — мы уже подготовили несколько крутых нововведений для участников и сообщества Indie Cup, и скоро обо всем расскажем. Не переключайтесь!








