![Hero background image](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F56666b56848d06b31729a84612144963710e5aef-1920x1080.jpg&w=3840&q=100)
Узнайте, как используется система Unity Tilemap в Happy Harvest, образце 2D симулятора фермерства с видом сверху вниз, созданного на Unity 2022 LTS.
Эти и многие другие техники для искусства и анимации вы найдете в электронной книге Искусство 2D-игр, анимация и освещение для художников.
Читайте другие статьи из этой серии, чтобы узнать, как повторить эффекты и визуальные эффекты в игре Happy Harvest:
- Техника 2D света и тени в универсальном конвейере рендеринга
- Как анимировать 2D-персонажей в Unity 2022 LTS
- 2D-спецэффекты с помощью VFX Graph и Shader Graph (скоро появится в продаже)
Скачать Счастливый урожай из Unity Asset Store уже сегодня.
![Режим перерисовки](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fa99962069b8670c3f9e850dbc680eb917ea24467-1920x1080.jpg&w=3840&q=75)
Система Unity Tilemap позволяет создавать игровой мир с помощью тайлов, которые представляют собой небольшие спрайты, расположенные на сетке. Вместо того чтобы создавать уровень как одно большое изображение, вы можете разделить его на части, похожие на кирпичи, которые повторяются на протяжении всего уровня. Это особенно полезно для игр с большими ходильными зонами, например, симуляторов или RPG.
Плиточные карты помогут сэкономить время на создание рисунка, а также память и процессор. Это связано с тем, что плитки могут быть отображены специальным рендерером, а плитки, не видимые на экране, могут быть отключены. Инструмент "кисть" позволяет эффективно рисовать плитки на сетке, и его можно заскриптовать, чтобы использовать правила рисования. Они также оснащены функцией автоматического создания коллизий для более эффективного тестирования и редактирования.
При создании тайлов важно избегать объединения слоистых тайлов, когда они не нужны, так как это помогает уменьшить перерисовку. В Happy Harvest все тайлмапы находятся под игровым объектом Grid . Вы можете видеть, как на тайлмапе под названием GroundBasec содержитсявся иллюстрация земли. Все эти плитки собираются в пакет одновременно, если установить режим рендеринга Chunk в Tilemap Renderer. Это поможет оптимизировать производительность.
Мощеная дорожка в образце могла быть создана с помощью слоев художественной плитки: Один для булыжника, другой для травы. Это может показаться удобным с точки зрения создания произведений искусства, но это будет менее производительно из-за слоев перекрывающихся пикселей. Создавайте отдельные тайлмапы только в случае необходимости, например, когда вам нужны отдельные плоскости глубины.
Чтобы получить полное представление о том, как работает система плиточных карт Unity, скачайте электронную книгу 2D-арт, анимация и освещение для художников.
![Разные тайлы природы](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fe6b6584246cfff30940a2f807cbf68d87bd59289-1920x1080.jpg&w=3840&q=75)
Плитки в Happy Harvest создавались по секциям, причем приоритет отдавался тем плиткам, которые активно используются в игре, например, главная тропинка или травяные пятна. Для этих карт требуется больше плиток, поскольку они используются для создания дорожек различной формы. В отличие от этого, фоновые сосны, выложенные в виде квадратных тайлов, требуют меньшего количества тайлов.
Как правило, реквизит, расположенный вертикально и визуализируемый перед или за персонажем, разделяется на игровые объекты в другом слое сортировки. Однако для размещения некоторых из этих объектов, например деревянных заборов, в сетке тайлмапа используется GameObject Brush, функция, входящая в пакет 2D Tilemap Extras. Чтобы разбросать эти реквизиты более органично, вы можете поместить их в игровой объект в иерархии за пределами карты плиток.
Вторичные текстуры для тайлмапов
Каждый тайлмап в папке Tilemaps имеет аналоги, называемые текстурами карты нормалей и карты масок. Они имеют те же размеры и расположение, но окрашены для демонстрации освещения. Прочитайте статью "Техника 2D света и тени в Universal Render Pipeline", чтобы узнать, как было создано освещение в примере.
Текстуры карты нормалей и карты маски добавляются к основной текстуре набора тайлов в редакторе спрайтов. В Happy Harvest карты масок используются для создания эффектов силуэтов персонажей и реквизита. Однако, поскольку большая часть плитки используется для грунта, она не нуждается в ободковой подсветке. Именно поэтому большая часть текстуры этой плитки черная, чтобы не отражать свет, созданный для эффекта ободка. Исключение составляет строительная черепица, используемая для крыш, края которой выделены.
![Пример плитки пути](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fc1da06341a4bed7fd4dd5bab58b083e497be71fd-1920x1080.jpg&w=3840&q=75)
Инструмент " Палитра плиток" используется в Happy Harvest для эффективного заполнения сетки каждой карты плитками. Ручное размещение краев или углов контура может занять много времени и привести к ошибкам. Вам придется повторять ручную работу каждый раз, когда вы вносите изменения в контур или любую другую фигуру на основе плитки. Чтобы избежать этого, можно использовать функцию Rule Tile.
Правило Плитка рисует правильные граничные плитки, основываясь на соседних плитках фигуры. В папке проекта Happy Harvest вы найдете палитру с плитками под названием Palette_Tiles. В первом ряду палитры находятся часто используемые плитки, например, почва с травой. Это плитки с правилами. Выберите GameObject в Инспекторе, чтобы показать актив в представлении проекта. Затем вы можете выбрать этот актив, чтобы просмотреть настройку плитки правил.
Если это применимо к вашему проекту, вы можете сэкономить время, повторно используя эти активы плитки или закрашивая текстуры.
![Несколько тайлмапов в сцене карты](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F69100f3332a4b76758e8bed67cacbd5840432190-1920x1080.jpg&w=3840&q=75)
Все плитки в образце имеют одинаковый размер и форму и содержатся в одном игровом объекте Grid. Это позволяет сократить количество тайлмапов. К игровому объекту Grid прикрепляется компонент под названием Terrain Manager, предоставляющий геймплейные возможности, о которых мы расскажем в следующем разделе.
Некоторые из карт плиток под игровым объектом Grid включают в себя:
- Подводная плитка: Они используются для подводной плитки, для скалы и в качестве зеленого грунта для пруда.
- Вода: Эти плитки используют отличный от остальных шейдер под названием Sprite-Lit-Material, созданный в Shader Graph для имитации анимации воды.
- Основание: Это художественное оформление земли, состоящее из плиток для дорожек, травы, грязи и камня для заполнения промежутков между плитками возвышения.
- ObjectsInTiles: Используется для игровых объектов, нарисованных на карте плиток с помощью кисти GameObject Brush из палитры Tile Palette, например, для заборов.
- TilledTilemap: Эти плитки используются в коде, чтобы обнаружить плитки, на которых можно посадить семена.
- WateredTileLayer: Это используется игровой логикой, чтобы плитки выглядели мокрыми. Когда плитка высохнет, "мокрые" плитки удаляются.
- Склад, дом: Эти тайлмапы используются для создания склада и дома. Создание зданий с помощью тайлмапов позволило художнику более эффективно изменять их форму и размер, а также сэкономить место для текстур, поскольку части здания используют одну и ту же текстуру.
- Урожай: Это группирует все растения под одним игровым объектом и также используется менеджером местности.
![Пример менеджера местности](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F41781e5023ecbf0e5c7f41d4369dc8706d2bfa73-1920x1080.jpg&w=3840&q=75)
Скрипт Terrain Manager, прикрепленный к игровому объекту Grid, обрабатывает смену тайлов и использует тайлы для отслеживания посевов. Он использует API Tilemap, который может быть полезен для настройки игрового процесса на основе сетки, помогая вам легче определить положение предметов в 2D.
Этот класс MonoBehaviour создает два общих класса под названием GroundData и CropData. Они включают в себя переменные, связанные с игровым процессом, такие как продолжительность времени, в течение которого плитки кажутся влажными, скорость роста растения или время, в течение которого оно не собирает урожай, прежде чем погибнуть.
Скрипт Terrain Manager ссылается на тайлмапы и тайлы, которые используются в игровых целях, в том числе:
- Карта наземной плитки: Это ссылка на карту тайлов, содержащую тайлы почвы, которые указывают, где игрок может копать и сажать семена. Если вы копаете в любой плитке за пределами этой карты плиток, ничего не произойдет.
- Обрезать карту плиток: Это ссылка на объект Tilemap GameObject, который является родительским объектом культур. Использование API Tilemap позволяет размещать, обновлять и удалять плитки обрезки.
- Карта водной плитки: Используйте его, чтобы закрасить плитки с обработанной почвой симулированной водой, визуально сообщая игроку, что эти плитки готовы к посадке и выращиванию.
- Политая водой плитка: Это плитка переопределения правил с графикой воды, которая позволяет создавать плитки с вариациями плиток правил без установки новых правил.
- Пахотная плитка: Он используется для определения плиток, которые игрок может использовать для копания.
- Кафельная плитка: Это плитка Rule Tile, используемая для визуального оформления обработанной почвы.
Сценарий Terrain Manager включает функции, использующие Tilemap API для чтения информации о плитках в формате Vector3int и соответствующего обновления плиток. Эти функции вызываются из различных инструментов, когда PlayerController запускает на них функцию.
![Пример кровотечения](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fd9b625a39d02009f543500049b77d679c4a36f3a-1920x1080.jpg&w=3840&q=75)
Чтобы визуальные эффекты выглядели красиво, необходимо избегать появления кровотечений или небольших зазоров между плитками из-за интерполяции и сглаживания краев. Этого не происходит в пиксель-арт играх, в которых спрайты не сглаживаются, поскольку их режим фильтрации установлен на Point (без фильтра). В Happy Harvest спрайты плиток упакованы в Sprite Atlas, который обеспечивает лучшую организацию проекта, производительность и управление с помощью простой настройки.
Если вы не используете лист плитки, рекомендуется использовать Sprite Atlas, чтобы помочь со швами и внутренней сортировкой в Tilemap Renderer. Некоторые настройки по умолчанию подходят для большинства спрайтов, но для тайлмапов может потребоваться небольшая настройка. Такие функции, как предотвращение вращения спрайтов при упаковке или альфа-развертка, помогают плиткам сохранять более четкие края.
![2D Game Art, Animation, and Lighting for Artists обложка электронной книги](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F18fdf7e5ad445f167b37a85f5c43581923519f5a-1200x675.jpg&w=3840&q=75)
Научиться создавать плитки, которые идеально соединяются, избегать повторов и сохранять сцену читаемой, можно методом проб и ошибок. Узнайте больше о системе Tilemap в электронной книге 2D-арт, анимация и освещение для художников.
В следующих статьях блога рассказывается о ретро 2D-играх, созданных с помощью Unity, и даются дополнительные советы по разработке 2D:
- 2D Pixel Perfect для четких завоеваний в Skul: Истребитель героев
- Как настроить проект Unity для ретро 16-битных игр
- Как настроить проект Unity для ретро 8-битных игр
- Молниеносный круг замечательных советов для 2D-игр
Кроме того, посмотрите другие наши 2D-демонстрации, Затерянный склеп и Dragon Crashers.
Больше ресурсов для продвинутых программистов, художников, технических художников и дизайнеров вы найдете в хабе "Лучшие практики Unity".