Как сделать катсцену в unity 2d

Обновлено: 07.07.2024

Продолжаем делать наш Unity for dummies платформер.

Полные версии кода будут находиться в конце поста.

Если вы не в курсе, как работают хуки жизненного цикла в Unity, вы можете ознакомиться с данной статьёй.

Затем выбираем наш объект Player слева, в меню иерархии, и закрепляем инспектор (меню справа), нажав на замок в верхнем правом углу.

Пока закрываем все ненужные компоненты (Box Collider 2D, etc), нажимая на стрелочку у каждого из них.

Теперь перетаскиваем наш скрипт в инспектор, и он прикрепляется к объекту Player (если вы не выполнили предыдщуий пункт с закрепением меню, то вы этого сделать не сможете).

Если зайти в Edit => Project Settings => Input Manager, то мы можём увидеть настройки управления. Например, прыжок (Jump) назначен на пробел, в то время, как движение по горизонтали назначено на a, d, ←,→.

Запомним это для того, чтобы затем использовать в коде (названия инпутов Jump, Horizontal).

Пора покодить. Два раза нажимаем на наш скрипт PlayerBehaviour, и Unity отдаст его в руки Visual Studio.

Честно, данную IDE я не люблю. Потому я открываю его в VScode (а вы хоть в VIMе пишите - это ваш выбор).

Я не буду часто использовать try/catch в этом коде, но вам очень советую - сильно экономит время.

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

Мне не нравится, что персонажа переворачивает. Исправим.

Заходим в инспектор, открываем Rigidbody2D и ставим галочку на Freeze Rotation Z.

Жить можно, но есть проблема - камера не двигается за персонажем.

Есть два основных способа научить камеру двигаться за персонажем.

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

2. Задать движение камеры за персонажем програмно.

Создаём скрипт CameraBehaviour, и привязываем его к объекту Main Camera (добавляем через инспектор).

Открываем наш новый скрипт, и начинаем кодить (да, мне на работе не хватает, продолжаю и после).

Фиксируем объект камеры на замок в инспекторе, и перетаскиваем наш объект Player в GameObject.

Теперь камера двигается за игроком.

Однако камера постоянно вылезает за пределы уровня, показывая синий фон.

Я не уверен, что моё решение правильное. Буду рад, если кто-нибудь поделится своими соображениями на данный счёт.

Если у камеры пропала рамка (у меня, внезапно, случилась такая оказия - потратил аж 2 минуты на решение проблемы), надо зайти в Gizmos и отметить чекбокс на камере.

Добавляем в наш скрипт CameraBehaviour следующий код:

[Header("Camera position restrictions")] public float minY; public float maxY; public float minX; public float maxX;

Двигаем камеру, и снимаем наши измерения ее положений.

На скрине ниже камера стоит в левом нижнем углу сцены.

Исходя из поля Position, я выбираю минимум по Х = -12, по Y = -0.5 (числа округлены их -12.09 и -0.84) соответсвенно.

Проставляем снятые позиции для камеры (мои и ваши позиции будут отличаться).

Теперь обновим метод UpdateCameraPosition в скрипте CameraBehaviour

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

Отлично, камера перестала "гулять". Работаем дальше.

Всё бы хорошо, но наш персонаж может летать - надо всего лишь жать кнопку прыжка. Добавим проверку на нахождение на земле.

Выбираем наш Foreground, и создаём новый слой 'Ground' в инспекторе.

Снова тыкаем на Foreground, и выбираем в поле Layer наш только что созданный слой.

Переходим к коду.

Добавим в PlayerBehaviour такую строчку.

Теперь в объекте Player мы можем выбрать наш свежесозданный слой.

Обновляем наш PlayerBehaviour. Добавим коллайдер (rigidBody мы создавали ранее).

Теперь мы можем обновить обработку перемещения персонажа в методе updatePlayerPosition

Тут я вспомнил, что забыл глянуть, как "наделся" Box Collider на персонажа. Кажется, все ок - линии идут ровно по персонажу (жёлтая рамка). Если что, всегда можно ткнуть на Edit Collider и подтянуть его.

Летать мы разучились, а по платформе больше не скользим. Победа!

  • Из-за слоя Ground персонаж может прыгать от стенок. Не знаю, как это можно решить.
  • Является ли ограничение движения камеры, которое я написал, отимальным.
  • Иногда персонаж застревает на месте. Такое ощущение, что коллайдер видит какой то микропиксель, и персонаж застревает на нём.

Я не уверен, что моё решение правильное. Буду рад, если кто-нибудь поделится своими соображениями на данный счёт

Привет.
Я, конечно, дохуя вовремя, когда у тебя уже пять статей и рефакторинг, но вот щас иду за тобой пока вот на этом месте.
Короче, в ассет-сторе есть проект 2D Game Kit от разрабов движка. Там движение камеры сделано буквально следующим образом, если помню (давно открывал). Уровень завёрнут в коллайдер, ещё один коллайдер на камере. Соответственно, когда она о него стукается, то расслабляется и не двигается. И ещё там угарный камера-лаг стоит, чтоб камера не жёстко следовала за персонажем, а как бы за верёвочку.

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

Надо разобраться куда исчезает. Самое простое, поставить на паузу, перейти из окна Game в Scene, и просто посмотреть. А потом уже делать выводы.

Cinemachine в 2D играх на Unity

В этом посте мы узнаем, как создать эффект камеры, обычно используемый в 2D-играх с видом сверху вниз, таких как Legend of Zelda, EarthBound и Stardew Valley. Но он без труда может работать в играх с боковой прокруткой, подобных Super Meat Boy или Limbo.

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

Исторически этот эффект достигался в Unity путем написания скриптов, но с Cinemachine мы можем создать его всего несколькими щелчками мыши, и код не нужен.

Требования

Необходимый уровень опыта, чтобы извлечь выгоду из этого поста, довольно минимален. Но вы должны быть знакомы с редактором Unity, объектами Unity GameObjects, камерой и сценами. Вы должны быть знакомы (или готовы научиться), как устанавливать пакеты Unity либо из Asset Store (← нажмите здесь, чтобы узнать, используете ли вы Unity 2017), либо через диспетчер пакетов (← или нажмите здесь, чтобы узнать, если вы используете Unity 2018).

Предыстория

Cinemachine — это мощный набор инструментов Unity для процедурных игровых камер, синематики и кат-сцен. Первоначально он был разработан Адамом Майхиллом (Adam Myhill) как платный ресурс в Unity Asset Store. В конечном итоге Unity приобрела Cinemachine, а Адам теперь работает в качестве их главы отдела синематики.

Cinemachine стал доступен через Asset Store для Unity 2017.1, вместе с релизом Timeline. В дальнейшем Cinemachine будет доступен через новый Unity Package Manager в Unity 2018.1.

Обратите внимание, что версии Unity 2017 по-прежнему могут использовать Cinemachine из Asset Store, но тот больше не обновляется и не будет содержать новых функций.

Начинаем

Если вы используете Unity 2017.X, скачайте и установите пакет Cinemachine из Asset Store. Вы также можете найти ссылку на пакет здесь. Если у вас Unity 2018.X, используйте новый менеджер пакетов для установки Cinemachine. Компания недавно объявила в своем блоге, что пакеты — это будущее Unity с точки зрения распространения новых функций.

меню cinemachine

Следующим шагом после установки Cinemachine будет создание Virtual Camera.

Что такое Virtual Camera? В документации к Cinemachine используется замечательная аналогия: виртуальную камеру можно представить как кинооператора. Он управляет настройками линз и положением главной камеры (Main Camera). Виртуальная камера сама по себе камерой не является. Ее можно считать управляющим устройством для главной камеры.

Cinemachine позволяет иметь несколько виртуальных камер для одной сцены. Такая свобода позволяет делать сложную съемку и монтаж. Эта свобода позволяет делать сложные снимки, срезы и сочетания. Без Cinemachine разработчик или оператор мог бы месяцами устанавливать и настраивать данные типы кадров вручную. Cinemachine даже допускает процедурный шум, так что любые два выстрела никогда не будут в точности одинаковыми, что дает более естественный эффект. Даже не собираюсь вдаваться в подробности возможностей Cinemachine.

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

Выше: Управление камерой в Unity. Каждую ночь одно и тоже.

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

объект Виртуальная камера

Выберите игровой объект Virtual Camera с эзотерическим названием “CM vcam 1”. Можете переименовать его как угодно, потому что он обладает компонентом Transform

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

свойства виртуальной камеры

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

установка цели преследования для виртуальной камеры

Свойство Follow позволяет устанавливать цель виртуальной камеры

Далее у нас есть свойство Follow. Перетащите объект Player, который вы хотите отслеживать, в свойство Follow. Unity будет извлекать ссылку на компонент Transform из объекта Player и использовать Transform в качестве цели Target для следования.

следовать камере за игроком

Установите объект Player в качестве цели Follow.

По умолчанию для параметра Body у виртуальной камеры выбран Transposer, который устанавливает фиксированную взаимосвязь с целью следования и регулирует положение камеры. Цель перемещается, и положение камеры перемещается вместе с ней. Существуют и другие варианты 2D Body, такие как Framing Transposer, но мы не будем рассматривать их в данной статье.

свойство Transposer

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

скорость расстояние до цели преследования

Настройки Damping и Offset

Пока все будет упрощено. Я лишь подскажу вам, что с разрешением экрана 1280 x 720, 32 пикселями на единицу (PPU) и артом, который хорошо выглядит при ширине 32 пикселя, нам нужен размер камеры 3,75.

Orthographic Size виртуальной камеры

Установите Orthographic Size 3,75.

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

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

Другими словами, мы хотим запереть виртуальную камеру в определенном пространстве. Для этого мы используем компонент Cinemachine Confiner.

cinemachine confiner

Запиратель должен запирать

предупреждение об установке границ области преследования

Прежде чем мы настроим коллайдеры, давайте посмотрим на представление Hierarchy для примера игры в этом посте:

виртуальная камера в cinemachine

У нас есть главная камера Main Camera и 3 тайловые карты Tilemaps(Вода, Земля, Кусты), которые используются в качестве слоев. Поскольку мы хотим ограничить камеру краем карты, имеет смысл добавить граничную логику, то есть Polygon Collider 2D, в карту Ground Tilemap.

добавление границ на карту поверхности

Добавьте в тайловую карту Polygon Collider 2D

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

Сначала нажмите кнопку Edit Collider в компоненте Polygon Collider 2D.

изменение границ коллайдера

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

Очень важно проверить, установлен ли флажок Is Trigger.

Следуйте инструкциям, чтобы не пострадали пиксели

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

Теперь нам нужно использовать этот коллайдер из тайловой карты земли в нашем Cinemachine Confiner.

Перетащите объект, содержащий коллайдер, в Bounding Shape 2D из Cinemachine Confiner.

окончательный вид в меню конфайнера

Теперь нажмите воспроизведение и проведите игрока. Камера должна остановиться на краях коллайдера, в то время как игрок может продолжать идти прямо к краю карты.

Если вы хотите узнать больше о разработке в Unity или для iOS, следуйте за Джаредом в Medium или в Твиттере.

Этот пост охватывает материал из выступления, которое он дал на конференции Unity Users Group в Нью-Йорке 16 мая 2018 года. Слайды из выступления можно посмотреть здесь.

Спасибо, что прочитали!

Переводит для Вас самые интересные статьи про разработку игр. По образованию физик-программист. Техническими переводами начала подрабатывать еще на старших курсах и постепенно это переросло в основное занятие. Интересуется гуманитарными технологиями, пробует себя в журналистике.

Пользовательская система кат-сцен в Unity

Система диалогов для Unity 2.x - Cutscene Sequences - Часть 6: Пользовательские команды секвенсора

Я пытаюсь сделать ролевую игру (без типичного прокачки уровней и тому подобного. Просто ролевая игра) на основе Wasted Youth Part 1 (это старая флэш-игра, в которой вы управляете подростком, отправленным в школу-интернат для проблемных дети, которых все время выгоняют из школ).

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

Одна идея (наряду с плюсами и минусами), которую я уже придумал, - сохранить кат-сцену в отдельной сцене с жестко запрограммированными (правильное слово?) Движением / анимацией / и т. Д. Это кажется хорошим, поскольку помогает мне легко хранить кат-сцены и легко настраивать происходящее в сцене. Однако проблема заключается в настойчивости. Если кат-сцена происходит в школьном кафетерии (как в WYP1), как, когда я загружаю игрока обратно в основную сцену, могу ли я легко убедиться, что он находится в кафетерии, все еще заполненном людьми?

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

  • \ $ \ begingroup \ $ Вы знаете, что вам не нужно выгружать сцену кафетерия, когда вы загружаете сцену кат-сцены, верно? \ $ \ endgroup \ $
  • \ $ \ begingroup \ $ Но что, если в кат-сцене игрок входит в кафетерий вместе с людьми в нем? \ $ \ endgroup \ $

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

Вариант 1. Сохранить состояние, воспроизвести кат-сцену, восстановить состояние

Вариант 2. Анимируйте что угодно

Вариант 3: для этого есть актив

В Unity Asset Store есть множество ресурсов, которые уже делают это, если вы специально не хотите писать все с нуля. Моя личная рекомендация - это Adventure Creator, так как он хорошо документирован и поддерживается, специально разработан для ролевых игр со статистической подсветкой (то, что раньше называлось приключенческими играми :), и в нем есть действительно хорошая система визуальных сценариев на основе узлов. -in, а также постоянство от сцены к сцене и сохранения / загрузки.

Я не владею им, но использую его и считаю, что он делает все, что мне нужно, и даже немного. Он периодически поступает в продажу, но вы можете проверить довольно обширные демонстрации / руководства на Youtube-канале разработчика (Крис Бертон).

  • \ $ \ begingroup \ $ Я уже все это знаю. Я все это учел, когда думал об этом. Может быть, я не понял, но под настойчивостью я не имею в виду сохранение или загрузку данных, я имею в виду, если у меня есть кат-сцена, где игрок входит в кафетерий, полный людей, когда они выходят из кат-сцены и возвращаются в основную сцену они все еще должны быть в кафетерии, полном людей. Что касается активов, я не хочу тратить деньги, и большинство активов, которые я нахожу в кат-сценах, составляют> 100 фунтов стерлингов. В любом случае, я благодарю вас за вашу помощь и предложения, но я придумал решение и собираюсь / опубликовал его. \ $ \ endgroup \ $
  • \ $ \ begingroup \ $ Persistence также включает сохранение конечного результата из кат-сцены и его применение при перезагрузке основной сцены. И мы только что закончили продажи активов Unity на конец года примерно за месяц. Но я рад, что вы в любом случае нашли решение. \ $ \ endgroup \ $

Я решил использовать описанный мною подход к сцене, но с некоторыми хитростями.

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


Это блог про аниме?

Intermedius — находящийся посередине. Думаю, что все, кто смотрел хотя бы одну серию аниме, замечали небольшую вставку в середине, которая обычно служит для перехода между сценами и рекламного блока (англ. - bumper, яп. - アイキャッチ aikyatchi). Картинка из заголовка статьи является таким переходом в одной из серий тайтла “New Game!!", про небольшую игровую студию. Ах да, раз это блог про Unity, то в данном посте мы рассмотрим оформление перехода между сценами именно в нём. =)

Сцены в Unity являются основной единицей деления игры на части и сам по себе переход между ними не является чем-то сложным. Переход реализуется через класс SceneManager, при помощи методов LoadScene() или LoadSceneAsync(), но без дополнительного оформления эти переходы будут резкими и это будет выглядеть странно. Попробуем сгладить этот переход, добавив проекту немного визуальной привлекательности.

Схема довольно проста: обе сцены, между которыми осуществляется переход, должны быть визуально идентичны на момент выгрузки предыдущей и загрузки следующей. Манипуляции для такого перехода обычно организуются через анимацию элементов сцены. Для примера в этом посте мы используем чёрный экран(элементом, отвечающим за данный эффект, будет картинка чёрного цвета). Выгружаемая сцена должна постепенно уйти в чёрный цвет, а следующая за ней плавно из него появиться.

Слово анимация как бы намекает нам на использование механизма в Unity под названием "Mecanim". Если вы не очень с ним знакомы, то можно прочитать(а ещё лучше использовать его в качестве упражнения) предыдущий пост "Шаблон Состояние", в котором, в целях тренировки, этот механизм использовался для создания машины состояний без анимации.

Задача

Оформить переход между тремя сценами через затемнение. Первая сцена появляется моментально и через 2 секунды переходит во вторую. Переходы между второй и третьей зациклены и осуществляется плавно по клику.

Подготовка

  1. Создадим три сцены:
    • BootScene - самая первая сцена, на которую попадает игра, покажем её сразу без затемнения
    • FirstScene и SecondScene - две сцены, переходы между которыми буду зациклены между друг другом
  2. Добавим сцены в Build Settings
  3. Создадим ещё один объект Canvas с именем SceneTransition . Выставим ему Render Mode - Screen Space - Camera и добавим Main Camera . Выставим Order in Layer равным 999 , чтобы он всегда был поверх всего остального
  4. Добавим к SceneTransition объект типа Image и назовём его Fade . Полностью чёрный, перекрывающий всю площадь экрана. Можно его отключить, чтобы он не загораживал экран

Анимация

  1. Создадим папку Animations
  2. Откроем панель Animation . Выделив элемент Fade нажмём кнопку Create и создадим анимацию FadeIn , также создадим анимацию FadeOut
  3. Настроим анимацию FadeIn . Выделяем ассет FadeIn . Убираем галочку Loop Time . Выделяем элемент Fade . В закладке Animation нажатием кнопки Enable/Disable keyframe recording mode включаем запись действий. Включаем компонент Image . Переходим в закладке Animation на отметку в 1 секунду. Выставляем в настройке цвета alpha = 0 . Выключаем компонент Image . В закладке Animation выключаем запись действий. Проверяем анимацию плавного появления UI из затемнения
  4. Настраиваем анимацию FadeOut , но в обратном порядке: включаем Image , альфа-канал от 0 до 100 . Этот пункт остаётся в качестве тренировки
  5. Настраиваем переход между анимациями. Во вкладке Animator добавляем триггер FadeOut . Добавляем переход между FadeIn и FadeOut . На переходе выключаем Has Exit Time , Transition duration выставляем в 0. В Conditions добавляем созданный триггер FadeOut
  6. Создадим скрипт TransitionHandler для переключения сцены после завершения анимации FadeOut

  1. Добавим созданный скрипт к объекту Fade . В конец анимации FadeOut добавим Event . Выберем функцию FadeOutFinished() из скрипта TransitionHandler

Настройка переходов

  1. Для BootScene создадим скрипт, который будет запускать переход на FirstScene через 2 секунды
  1. Настроим BootScene . Добавим префаб SceneTransition . Настроим камеру. Укажем следующую сцену - FirstScene . Отключим анимацию появления сцены
  2. Добавим на сцену пустой объект назовём его BootHandler и добавим соответствующий скрипт. Настроим для нового объекта animator
  3. После запуска BootScene должна иметь затемнение перед переключением
  4. Создадим скрипт ClickHandler для остальных сцен, который будет запускать переход по клику
  1. Настроим FirstScene . Добавим префаб SceneTransition . Настроим камеру. Укажем следующую сцену - SecondScene
  2. Добавим на сцену пустой объект назовём его ClickHandler и добавим соответствующий скрипт. Настроим для нового объекта animator
  3. Настроим SecondScene . Проделываем те же самые шаги, что и для FirstScene , только указываем следующей сцену - FirstScene
  4. Наслаждаемся результатом

Заключение

После всех наших манипуляций мы получили префаб, который можно использовать для настройки переходов между сценами. Навряд ли вы будете его использовать для продакшена, так как используемая синхронная загрузка сцен не очень красивое решение, а также необходима тонкая настройка условий перехода, необходимо продумать остановку игры, в момент начала анимации. Да и сами анимации желательно сделать более интересными, например, в Homescapes(Playrix) переход между загрузкой ресурсов и запуском меню скрыт за опускающейся вдоль стены дома камерой. Однако, после повторения данных шагов собственными руками, у вас должно сложиться представление, как сделать переходы красиво. Пока! =)


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

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


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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также: