Использование GridMaps (карты тайлов)

Введение

Gridmaps - это инструмент для создания 3D уровней игры, подобно тому, как TileMap работает в 2D. Вы начинаете с предопределённой коллекции 3D сеток (библиотека MeshLibrary), которые могут быть размещены на сетке, как если бы вы строили уровень из неограниченного количества блоков Lego.

Столкновения и навигацию также можно добавить к сеткам, как это делается с плитками карт тайлов.

Пример проекта

Чтобы узнать как работают GridMaps, скачайте тестовый проект : gridmap_demo.zip.

Разархивируте этот проект и добавьте его в мэнеджер проекта используя кнопку "импортировать".

Создание MeshLibrary

Для начала вам понадобится MeshLibrary, которая представляет собой коллекцию отдельных сеток, которые могут быть использованы в карте сетки. Откройте сцену "MeshLibrary_Source.tscn", чтобы посмотреть пример настройки библиотеки сеток.

../../_images/gridmap_meshlibrary1.png

Как вы можете видеть, эта сцена имеет узел Spatial в качестве корня, и несколько дочерних узлов MeshInstance.

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

Столкновения

Вы можете вручную назначить StaticBody и CollisionShape для каждой сетки. В качестве альтернативы можно использовать меню "Mesh" для автоматического создания тела столкновения на основе данных сетки.

../../_images/gridmap_create_body.png

Обратите внимание, что тело столкновения "Convex" будет лучше работать для простых сеток. Для более сложных форм выберите "Create Trimesh Static Body". После того как каждой сетке назначено физическое тело и форма столкновения, ваша библиотека сеток готова к использованию.

../../_images/gridmap_mesh_scene.png

Материалы

При генерации библиотеки сеток используются только материалы из сеток. Материалы, установленные на узле, игнорируются.

Экспорт MeshLibrary

Чтобы экспортировать библиотеку, нажмите "Scene -> Convert To... -> MeshLibrary...", и сохраните её как ресурс.

../../_images/gridmap_export.png

Вы можете найти уже экспортированную MeshLibrary в проекте под названием "MeshLibrary.tres".

Использование GridMap

Создайте новую сцену и добавьте узел GridMap. Добавьте библиотеку сетки, перетащив файл ресурсов из панели FileSystem и поместив его в свойство "Theme" в инспекторе.

../../_images/gridmap_main.png

Свойство "Cell/Size" должно быть установлено на размер вашей сетки. Для демонстрации можно оставить значение по умолчанию. Установите для свойства "Center Y" значение "Off".

Теперь вы можете приступить к проектированию уровня, выбрав плитку из палитры и поместив её с помощью щелчка левой кнопкой мыши в окне редактора. Чтобы удалить плитку, удерживайте Shift и используйте правую кнопку мыши.

Нажмите на меню "GridMap", чтобы увидеть опции и сочетания клавиш. Например, нажатие S поворачивает плитку вокруг оси Y.

../../_images/gridmap_menu.png

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

../../_images/gridmap_select.png

В меню можно также изменить ось, по которой ведётся рисование, а также сместить плоскость рисунка выше или ниже по оси.

../../_images/gridmap_shift_axis.png

Использование GridMap в коде

Подробности о методах и переменных-членах узла см. в GridMap.