2D-игра в Unity: как настроить спрайты, камеру, физику и первый уровень

В 2D-проекте персонаж может оказаться слишком большим, фон перекрыть монеты, а столкновения не сработать. Эти ошибки относятся к разным системам. Если понимать, кто отвечает за размер, отображение и физику, исправлять их гораздо проще.

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

ТОП-5 курсов обучения Unity:

Что означает 2D в Unity

Двухмерная игра обычно использует изображения-спрайты и движение в плоскости X/Y. Объекты при этом остаются частью сцены Unity с Transform и координатой Z. Выбор 2D-режима не делает все вопросы глубины и камеры автоматическими.

Для физики используется отдельный набор компонентов: Rigidbody 2D, Collider 2D и события с суффиксом 2D. Их нужно согласовать между объектами. Обзор инструментов находится в официальном разделе 2D.

Выберите шаблон под графические задачи

Для простой игры без специального освещения достаточно базового 2D-проекта. Если нужны 2D Lights и возможности соответствующего Renderer, выберите настроенный шаблон Universal 2D или подготовьте URP с 2D Renderer.

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

Для первого уровня создайте папки Scenes, Art, Prefabs и Scripts. Пока ресурсов мало, простой порядок делает понятным, какой файл является исходным изображением, а какой — игровым объектом.

Импортируйте изображения как спрайты

Поместите изображение в Assets, выберите его и откройте Inspector. Проверьте Texture Type: для обычного игрового спрайта нужен Sprite (2D and UI). У одного изображения используйте Single; для атласа с несколькими кадрами — Multiple и нарезку в Sprite Editor.

После изменения параметров нажимайте Apply. Затем перетащите нужный спрайт в сцену и проверьте Sprite Renderer. Если файл лежит в Project, это ещё не означает, что он размещён в уровне.

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

Pixels Per Unit: договоритесь о размере мира

PPU показывает, сколько пикселей спрайта приходится на мировую единицу. При ширине изображения 100 пикселей и PPU 100 объект с единичным Transform Scale будет шириной одну единицу. При PPU 50 ширина станет двумя единицами.

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

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

Настройте ортографическую камеру

У ортографической камеры размер объектов на экране не меняется из-за перспективного удаления. Для начала поставьте её перед плоскостью игры, например в (0, 0, -10), а игровые объекты — на Z = 0.

Параметр Orthographic Size задаёт половину видимой высоты мира. При Size 5 камера показывает по вертикали 10 мировых единиц. Видимая ширина зависит от соотношения сторон окна: на узком экране те же объекты могут оказаться вне боковых границ.

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

Sorting Layer и Order in Layer: кто рисуется поверх

Начните с нескольких смысловых Sorting Layers: Background, World и Foreground. У Sprite Renderer выберите нужный слой, затем задайте Order in Layer для порядка внутри него. Подробности приоритетов находятся в руководстве по сортировке 2D.

Пример: фон относится к Background, персонаж и монеты — к World, верхняя часть декоративного навеса — к Foreground. Порядок становится понятным без постоянного изменения Z каждого объекта.

Sorting Layer и обычный Layer решают разные задачи. Первый связан с отображением спрайтов. Обычные слои применяются также для фильтров камеры и взаимодействий физики. Изменение Sorting Layer не отключает столкновения.

Для вида сверху может понадобиться сортировка по положению персонажа относительно объектов. Настраивайте её отдельно и проверяйте точку сортировки спрайта: большой рисунок с неподходящим pivot способен давать неожиданный порядок у границ объектов.

Физика: выберите поведение объекта

Стена или неподвижная платформа обычно получает Collider 2D. Игрок, движение которого должно учитывать физические столкновения, получает Rigidbody 2D и Collider 2D. Подбираемый предмет можно сделать триггером.

Для вида сверху Gravity Scale обычно равен 0. Для платформера гравитация участвует в падении и прыжках. Эти два типа управления не стоит смешивать в одном контроллере случайными правками.

Динамическое физическое тело двигайте согласованным способом. Если один код задаёт скорость Rigidbody 2D, а другой каждый кадр переносит Transform, они могут спорить о положении. Начните с одного владельца движения.

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

Когда нужен Tilemap

Если уровень построен из повторяющихся клеток, Tilemap упрощает рисование карты и работу с тайлами. Пол, стены и декорации удобно разделять на разные карты. Так не приходится добавлять Collider к декоративным деталям, которые не должны мешать движению.

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

Анимация: сначала проверьте кадры и состояние

Для покадровой анимации подготовьте спрайты одинакового масштаба и согласованный pivot. Затем создайте Animation Clip и назначьте переходы Animator. Если персонаж при анимации «прыгает» по размеру, сначала проверяйте исходные кадры и импорт.

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

Проверяйте читаемость и нагрузку

В маленьком масштабе персонаж, опасность и предмет должны различаться. Проверьте их в обычном размере Game View, а не только при увеличении спрайта в редакторе. Однородный фон способен спрятать важный объект даже при технически правильном отображении.

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

Минимальный порядок работы над первой 2D-игрой

  1. Подготовьте один экран с камерой и несколькими фигурами.
  2. Проверьте масштаб и порядок отображения.
  3. Добавьте движение и нужные коллайдеры.
  4. Сделайте цель, завершение попытки и перезапуск.
  5. Получите сборку и повторите проверку вне Editor.
  6. После этого заменяйте фигуры окончательной графикой и расширяйте уровень.

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

Документация