Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

GridMap

Успадковує: Node3D < Node < Object

Вузол для 3D-карт на основі плиток.

Опис

GridMap дозволяє розміщувати сітки на сітці в інтерактивному режимі. Він працює як з редактора, так і зі скриптів, які можуть допомогти вам створити редактори рівнів у грі.

GridMaps використовують MeshLibrary, який містить список плиток. Кожна плитка — це сітка з матеріалами, а також додаткові форми зіткнень і навігації.

GridMap містить набір клітинок. Кожна клітинка сітки посилається на плитку в MeshLibrary. Усі клітинки на карті мають однакові розміри.

Внутрішньо GridMap розділено на розріджену колекцію октантів для ефективного відтворення та фізичної обробки. Кожен октант має однакові розміри і може містити кілька комірок.

Примітка: GridMap не розширює VisualInstance3D, тому його не можна приховати або замаскувати на основі VisualInstance3D.layers. Якщо ви зробите так, щоб світло не впливало на перший шар, уся GridMap не буде освітлена цим світлом.

Посібники

Властивості

bool

bake_navigation

false

bool

cell_center_x

true

bool

cell_center_y

true

bool

cell_center_z

true

int

cell_octant_size

8

float

cell_scale

1.0

Vector3

cell_size

Vector3(2, 2, 2)

int

collision_layer

1

int

collision_mask

1

float

collision_priority

1.0

DebugVisibilityMode

collision_visibility_mode

0

MeshLibrary

mesh_library

PhysicsMaterial

physics_material

Методи

void

clear()

void

clear_baked_meshes()

RID

get_bake_mesh_instance(idx: int)

Array

get_bake_meshes()

Basis

get_basis_with_orthogonal_index(index: int) const

int

get_cell_item(position: Vector3i) const

Basis

get_cell_item_basis(position: Vector3i) const

int

get_cell_item_orientation(position: Vector3i) const

bool

get_collision_layer_value(layer_number: int) const

bool

get_collision_mask_value(layer_number: int) const

Array

get_meshes() const

RID

get_navigation_map() const

Vector3i

get_octant_coords_from_cell_coords(cell_coords: Vector3i) const

Array[Vector3i]

get_octants_in_bounds(bounds: AABB) const

int

get_orthogonal_index_from_basis(basis: Basis) const

Array[Vector3i]

get_used_cells() const

Array[Vector3i]

get_used_cells_by_item(item: int) const

Array[Vector3i]

get_used_cells_in_octant(octant_coords: Vector3i) const

Array[Vector3i]

get_used_cells_in_octant_by_item(octant_coords: Vector3i, item: int) const

Array[Vector3i]

get_used_octants() const

Array[Vector3i]

get_used_octants_by_item(item: int) const

Array[Vector3i]

get_used_octants_in_bounds(bounds: AABB) const

Vector3i

local_to_map(local_position: Vector3) const

void

make_baked_meshes(gen_lightmap_uv: bool = false, lightmap_uv_texel_size: float = 0.1)

Vector3

map_to_local(map_position: Vector3i) const

void

resource_changed(resource: Resource)

void

set_cell_item(position: Vector3i, item: int, orientation: int = 0)

void

set_collision_layer_value(layer_number: int, value: bool)

void

set_collision_mask_value(layer_number: int, value: bool)

void

set_navigation_map(navigation_map: RID)


Сигнали

cell_size_changed(cell_size: Vector3) 🔗

Видається, коли cell_size змінюється.


changed() 🔗

Викликається, коли змінюється MeshLibrary цієї GridMap.


Переліки

enum DebugVisibilityMode: 🔗

DebugVisibilityMode DEBUG_VISIBILITY_MODE_DEFAULT = 0

Hide the collisions debug shapes in the editor, and use the debug settings to determine their visibility in game (i.e. SceneTree.debug_collisions_hint or SceneTree.debug_navigation_hint).

DebugVisibilityMode DEBUG_VISIBILITY_MODE_FORCE_SHOW = 1

Always show the collisions debug shapes.

DebugVisibilityMode DEBUG_VISIBILITY_MODE_FORCE_HIDE = 2

Always hide the collisions debug shapes.


Константи

INVALID_CELL_ITEM = -1 🔗

Недійсний елемент клітинки, який можна використовувати в set_cell_item() для очищення клітинок (або представляти порожню клітинку в get_cell_item()).


Описи властивостей

bool bake_navigation = false 🔗

  • void set_bake_navigation(value: bool)

  • bool is_baking_navigation()

Якщо true, ця GridMap створює область навігації для кожної комірки, яка використовує елемент mesh_library з навігаційною сіткою. Створена область навігації використовуватиме бітову маску шарів навігації, призначену елементу MeshLibrary.


bool cell_center_x = true 🔗

  • void set_center_x(value: bool)

  • bool get_center_x()

Якщо true, елементи сітки відцентровані на осі X.


bool cell_center_y = true 🔗

  • void set_center_y(value: bool)

  • bool get_center_y()

Якщо true, елементи сітки відцентровані на осі Y.


bool cell_center_z = true 🔗

  • void set_center_z(value: bool)

  • bool get_center_z()

Якщо true, елементи сітки відцентровані на осі Z.


int cell_octant_size = 8 🔗

  • void set_octant_size(value: int)

  • int get_octant_size()

Розмір кожного октанта вимірюється кількістю клітинок. Це стосується всіх трьох осей.


float cell_scale = 1.0 🔗

  • void set_cell_scale(value: float)

  • float get_cell_scale()

Масштаб елементів комірки.

Це не впливає на розмір самих комірок сітки, а лише на елементи в них. Це можна використовувати для того, щоб елементи комірки перекривали сусідні.


Vector3 cell_size = Vector3(2, 2, 2) 🔗

  • void set_cell_size(value: Vector3)

  • Vector3 get_cell_size()

Розміри комірок сітки.

Це не впливає на розмір сіток. Див. cell_scale.


int collision_layer = 1 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

Фізичні шари цієї GridMap.

GridMaps діють як статичні тіла, тобто на них не впливає сила тяжіння чи інші сили. Вони впливають лише на інші фізичні тіла, які з ними стикаються.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Фізичні шари, у яких ця GridMap виявляє зіткнення. Щоб отримати докладнішу інформацію, перегляньте Шари та маски зіткнень у документації.


float collision_priority = 1.0 🔗

  • void set_collision_priority(value: float)

  • float get_collision_priority()

Пріоритет, який використовується для вирішення співвідношенні при виникненні проникнення. Чим вище пріоритет, тим нижче проникнення в об'єкт буде. Цей приклад можна використовувати для запобігання розбиття гравця за кордонами рівня.


DebugVisibilityMode collision_visibility_mode = 0 🔗

Show or hide the GridMap's collision shapes. If set to DEBUG_VISIBILITY_MODE_DEFAULT, this depends on the show collision debug settings.


MeshLibrary mesh_library 🔗

Призначена MeshLibrary.


PhysicsMaterial physics_material 🔗

  • void set_physics_material(value: PhysicsMaterial)

  • PhysicsMaterial get_physics_material()

Замінює властивості фізики тертя та відскоку за замовчуванням для всієї GridMap.


Описи методів

void clear() 🔗

Очистити всі клітинки.


void clear_baked_meshes() 🔗

Очищає всі запечені сітки. Перегляньте make_baked_meshes().


RID get_bake_mesh_instance(idx: int) 🔗

Повертає RID запеченої сітки з заданим idx.


Array get_bake_meshes() 🔗

Повертає масив ArrayMesh та посилань Transform3D на всі запечені сітки, що існують у поточній GridMap. Парні індекси містять ArrayMesh, тоді як непарні індекси містять Transform3D, які завжди дорівнюють Transform3D.IDENTITY.

Цей метод спирається на вивід методу make_baked_meshes(), який буде викликаний з gen_lightmap_uv, встановленим на true, та lightmap_uv_texel_size, встановленим на 0.1, якщо його ще не було викликано.


Basis get_basis_with_orthogonal_index(index: int) const 🔗

Повертає одне з 24 можливих поворотів, які лежать уздовж векторів (x, y, z), причому кожен компонент має значення -1, 0 або 1. Щоб отримати додаткові відомості, зверніться до вихідного коду Godot.


int get_cell_item(position: Vector3i) const 🔗

Індекс елемента MeshLibrary, розташований у заданих координатах сітки. Якщо клітинка порожня, буде повернено INVALID_CELL_ITEM.


Basis get_cell_item_basis(position: Vector3i) const 🔗

Повертаємо основу, що дає зазначену клітину свою спрямованість.


int get_cell_item_orientation(position: Vector3i) const 🔗

Орієнтація комірки на задану сітку координат. -1 повертається, якщо клітинка порожня.


bool get_collision_layer_value(layer_number: int) const 🔗

Повертаємо, чи не вказаний шар collision_layer, враховуючи layer_number між 1 і 32.


bool get_collision_mask_value(layer_number: int) const 🔗

Повертаємо, чи не вказаний шар collision_layer, враховуючи layer_number між 1 і 32.


Array get_meshes() const 🔗

Повертає масив посилань на Transform3D та Mesh, що відповідають непорожнім коміркам у сітці. Перетворення задаються в локальному просторі. Парні індекси містять Transform3D, тоді як непарні індекси містять Mesh, пов'язані з Transform3D в індексі, що передує йому.


RID get_navigation_map() const 🔗

Повертає RID навігаційної карти, яку цей вузол GridMap використовує для своїх навігаційних сіток із запеченими комірками.

Ця функція завжди повертає карту, встановлену на вузлі GridMap, а не карту на NavigationServer. Якщо карту змінено безпосередньо за допомогою API NavigationServer, вузол GridMap не буде знати про зміну карти.


Vector3i get_octant_coords_from_cell_coords(cell_coords: Vector3i) const 🔗

Returns the Vector3i octant coordinates of the octant that the cell at cell_coords belongs to.


Array[Vector3i] get_octants_in_bounds(bounds: AABB) const 🔗

Returns an array of Vector3i octant coordinates that are inside the given bounds, including octants that have no cells in use.


int get_orthogonal_index_from_basis(basis: Basis) const 🔗

Ця функція розглядає дискретизацію поворотів у 24 точки на одиничній сфері, що лежать уздовж векторів (x, y, z), причому кожен компонент має значення -1, 0 або 1, і повертає індекс (у діапазоні від 0 до 23 ) точки, що найкраще відображає орієнтацію об’єкта. Щоб отримати додаткові відомості, зверніться до вихідного коду Godot.


Array[Vector3i] get_used_cells() const 🔗

Повертає масив Vector3 з координатами непорожніх комірок у сітці.


Array[Vector3i] get_used_cells_by_item(item: int) const 🔗

Повертає масив усіх комірок із заданим індексом елемента, вказаним у item.


Array[Vector3i] get_used_cells_in_octant(octant_coords: Vector3i) const 🔗

Returns an array of Vector3is with the cell coordinates of non-empty cells inside the octant at octant_coords.


Array[Vector3i] get_used_cells_in_octant_by_item(octant_coords: Vector3i, item: int) const 🔗

Returns an array of Vector3is with the cell coordinates of cells inside the octant at octant_coords that use the specified cell item.


Array[Vector3i] get_used_octants() const 🔗

Returns an array of Vector3is with the octant coordinates of the non-empty octants in the grid map.


Array[Vector3i] get_used_octants_by_item(item: int) const 🔗

Returns an array of Vector3is with the octant coordinates of the octants that use the specified item in the grid map.


Array[Vector3i] get_used_octants_in_bounds(bounds: AABB) const 🔗

Returns an array of Vector3is with the octant coordinates of non-empty octants that are inside the local bounds.


Vector3i local_to_map(local_position: Vector3) const 🔗

Повертає картографічні координати комірки, що містить заданий local_position. Якщо local_position знаходиться в глобальних координатах, розгляньте можливість використання Node3D.to_local() перед тим, як передавати його цьому методу. Дивіться також map_to_local().


void make_baked_meshes(gen_lightmap_uv: bool = false, lightmap_uv_texel_size: float = 0.1) 🔗

Генерує запечену сітку, яка представляє всі сітки у призначеній MeshLibrary для використання з LightmapGI. Якщо gen_lightmap_uv має значення true, дані UV2 будуть згенеровані для кожної сітки, яка наразі використовується в GridMap. В іншому випадку, лише сітки, які вже мають дані UV2, зможуть використовувати запечені карти освітлення. Під час генерації UV2, lightmap_uv_texel_size контролює щільність текселів для карт освітлення, причому нижчі значення призводять до більш детальних карт освітлення. lightmap_uv_texel_size ігнорується, якщо gen_lightmap_uv має значення false. Див. також get_bake_meshes(), який спирається на вивід цього методу.

Примітка: Виклик цього методу фактично не запікає карти освітлення, оскільки запікання карти освітлення виконується за допомогою вузла LightmapGI.


Vector3 map_to_local(map_position: Vector3i) const 🔗

Повертає положення комірки сітки в локальному координатному просторі GridMap. Щоб перетворити повернуте значення в глобальні координати, використовуйте Node3D.to_global(). Дивіться також local_to_map().


void resource_changed(resource: Resource) 🔗

Застаріло: Use Resource.changed instead.

Цей метод нічого не робить.


void set_cell_item(position: Vector3i, item: int, orientation: int = 0) 🔗

Встановлює індекс сітки для клітинки, на яку посилається її координатна сітка.

Від’ємний індекс елемента, наприклад INVALID_CELL_ITEM, очистить клітинку.

За бажанням можна передати орієнтацію елемента. Для дійсних значень орієнтації див. get_orthogonal_index_from_basis().


void set_collision_layer_value(layer_number: int, value: bool) 🔗

На основі value, умикає чи вимикає зазначений шар в collision_layer, для layer_number між 1 і 32.


void set_collision_mask_value(layer_number: int, value: bool) 🔗

На основі value, умикає чи вимикає зазначений шар в collision_mask, для layer_number між 1 і 32.


void set_navigation_map(navigation_map: RID) 🔗

Налаштовує RID навігаційної карти цього вузла GridMap слід використовувати для її клітинних запечених навігаторів.