
В Unity есть отличный функционал по созданию 2D Tilemap, который позволяет реализовать красивые изометрические и 2D миры.
Но, что если нужно создать именно 3d Tilemap?
В этой статье я расскажу как это сделать без единой строчки кода.
Что нам требуется?
Blender3d или любой другой софт для создания 3d моделей тайлов
Unity + установленные стандартные пакеты для работы с 2D Tilemap
Понимание как работать с правилами 2D Tilemap (Rule Tile)
Основной принцип работы
При создании карты с использованием 2d тайлов, можно указывать правила (Rule Tile), по которым будут размещены тайлы в игровом пространстве. Они нужны для того, чтобы делать плавные переходы между разными типами поверхностей, при этом автоматически. Достаточно просто рисовать базовыми цветами настроенными в правилах, а они в свою очередь расставят переходы между тайлами.
Пример:



Как видим, на скриншоте с настройкой правила есть поле "GameObject", а это значит, что мы можем поместить в него любой префаб. И он будет размещаться на карте согласно установленным правилам. А это значит, что мы можем применить 2d подход в 3d.
На сцене мы видим множество объектов, при этом в иерархии для каждого тайла он один. Все это будет работать и взаимодействовать с физикой и скриптами.


Далее расскажу как это настроить...
Создаем 3d модели
Нам необходимо создать 3d тайлы по тому же принципу, по которому сделана 2d сетка на скриншоте:

Вот что у меня получилось. Я сделал 2 вида поверхностей, с разными размерами
Камни - 6 метров кубических
Трава - 4 метра кубических
Если сравнить скриншоты, то видно, что в 2d у нас присутствует два вида поверхности на одной сетке. Трава и песок.
В 3d же я использую только одну поверхность в одной сетке, но вы можете и поэкспериментировать с двумя, для реализации плавных переходов между поверхностями.

Самое сложное в построении таких 3d тайлов, это правильно по размерам отрисовать все модели и расставить им точки вращения. Я сначала делал Кубы 6 на 6 метров, ставил их рядом, устанавливал каждому pivot в самом низу куба, по центру, а потом соединял кубы вместе с помощью привязки по сетке в Blender.
Далее каждый куб делил на грани и вручную делал неровности.
Важные моменты
pivot всегда должен быть внизу куба и по центру для дальнейшей корректной расстановки данных объектов в untity
Точки, которые граничат с точками соседних объектов - не нужно деформировать после разделения кубов на грани. Они все должны находиться на равных высотах. Потому, что каждый тайл может граничить с тайлами двух-трех разновидностей.
Как все настроить в Unity
Первым делом устанавливаем пакеты для работы с 2d
2D Sprite
2D Tilemap Editoir
2D Tilemap Extras
Импортируем наши 3d тайлы и разделяем их на префабы:

Создаем Tile Palette
Открываем окно TilePalette нажимаем "Create New Palette"
Устанавливаем в "Cell Size" все параметры равные 0.16
Нажимаем "Create"

Создаем TileMap
В иерархии сцены кликаем:

Выбираем появившийся объект "Grid" и в инспекторе указываем размеры "Cell Size" - это первоначальные размеры наших кубов из которых мы делали тайлы. В моем случае это были кубы 6 на 6 для камней.
"Cell Swizzle" ставим XZY

Создаем Rule Tile
В окне Project кликаем:

Выбираем появившийся объект и в инспекторе устанавливаем параметры правила:

DefaultSprite — я указал спрайт 16 на 16 пикселей такой же как при создании Tile Palette
Default Game Object — тут установлен префаб, который отоборажён по центру. Именно его вы будете видеть рисуя tilemap с помощью кисти.
Tiling Rueles — это массив префабов, которые будут размещены согласно установленным правилам. Прилагаю скриншот с названиями объектов для того чтобы было понятнее как все настроено:
Финальный этап
Переносим наш созданный Rule Tile в Tile Palette.

Выбираем нужный вам тайл, кликаем на кисть, и рисуем прям внутри окна Scene ваши 3D тайлы. Также вам доступны другие все те же инструменты, что и для создания 2d тайлов, только в 3d,
Вы можете создавать множество TileMep Для создания многоуровневых поверхностей. Просто изменяйте расположение TileMap по оси Z.

Плюсы, минусы и выводы!
Плюсы:
+ Вы получает чистую иерархию в сцене.
+ Вы получаете инструментарий для создания 3d TileMap
Минусы:
- За счет того, что в иерархии вы видете только один объект - вы не имеете доступ к каждому префабу по отдельности.
Инструменты для создания 2d Tilemap можно использовать для реализации 3d Tilemap.
Эту тему можно расширять и генерировать 3d тайлы с помощью карт высот или пиксельных изображений, где один пиксель отвечает за один тайл. Изучайте создание 2d Tilemap для применения данных знаний и практик в построении 3d уровней!