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.
Checking the stable version of the documentation...
GridMap
Успадковує: Node3D < Node < Object
Вузол для 3D-карт на основі плиток.
Опис
GridMap дозволяє розміщувати сітки на сітці в інтерактивному режимі. Він працює як з редактора, так і зі скриптів, які можуть допомогти вам створити редактори рівнів у грі.
GridMaps використовують MeshLibrary, який містить список плиток. Кожна плитка — це сітка з матеріалами, а також додаткові форми зіткнень і навігації.
GridMap містить набір клітинок. Кожна клітинка сітки посилається на плитку в MeshLibrary. Усі клітинки на карті мають однакові розміри.
Внутрішньо GridMap розділено на розріджену колекцію октантів для ефективного відтворення та фізичної обробки. Кожен октант має однакові розміри і може містити кілька комірок.
Примітка: GridMap не розширює VisualInstance3D, тому його не можна приховати або замаскувати на основі VisualInstance3D.layers. Якщо ви зробите так, щоб світло не впливало на перший шар, уся GridMap не буде освітлена цим світлом.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
Vector3 |
|
|
|
||
|
||
|
||
|
||
PhysicsMaterial |
Методи
void |
clear() |
void |
|
RID |
get_bake_mesh_instance(idx: int) |
get_basis_with_orthogonal_index(index: int) const |
|
get_cell_item(position: Vector3i) const |
|
get_cell_item_basis(position: Vector3i) const |
|
get_cell_item_orientation(position: Vector3i) const |
|
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
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 |
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()).
Описи властивостей
Якщо true, ця GridMap створює область навігації для кожної комірки, яка використовує елемент mesh_library з навігаційною сіткою. Створена область навігації використовуватиме бітову маску шарів навігації, призначену елементу MeshLibrary.
Якщо true, елементи сітки відцентровані на осі X.
Якщо true, елементи сітки відцентровані на осі Y.
Якщо true, елементи сітки відцентровані на осі Z.
Розмір кожного октанта вимірюється кількістю клітинок. Це стосується всіх трьох осей.
Масштаб елементів комірки.
Це не впливає на розмір самих комірок сітки, а лише на елементи в них. Це можна використовувати для того, щоб елементи комірки перекривали сусідні.
Vector3 cell_size = Vector3(2, 2, 2) 🔗
void set_cell_size(value: Vector3)
Vector3 get_cell_size()
Розміри комірок сітки.
Це не впливає на розмір сіток. Див. cell_scale.
Фізичні шари цієї GridMap.
GridMaps діють як статичні тіла, тобто на них не впливає сила тяжіння чи інші сили. Вони впливають лише на інші фізичні тіла, які з ними стикаються.
Фізичні шари, у яких ця GridMap виявляє зіткнення. Щоб отримати докладнішу інформацію, перегляньте Шари та маски зіткнень у документації.
float collision_priority = 1.0 🔗
Пріоритет, який використовується для вирішення співвідношенні при виникненні проникнення. Чим вище пріоритет, тим нижче проникнення в об'єкт буде. Цей приклад можна використовувати для запобігання розбиття гравця за кордонами рівня.
DebugVisibilityMode collision_visibility_mode = 0 🔗
void set_collision_visibility_mode(value: DebugVisibilityMode)
DebugVisibilityMode get_collision_visibility_mode()
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 🔗
void set_mesh_library(value: MeshLibrary)
MeshLibrary get_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.
Повертає масив 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.
Повертає масив посилань на Transform3D та Mesh, що відповідають непорожнім коміркам у сітці. Перетворення задаються в локальному просторі. Парні індекси містять Transform3D, тоді як непарні індекси містять Mesh, пов'язані з Transform3D в індексі, що передує йому.
Повертає 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.
Налаштовує RID навігаційної карти цього вузла GridMap слід використовувати для її клітинних запечених навігаторів.