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...
NavigationPolygon
Експериментальний: This class may be changed or removed in future versions.
Успадковує: Resource < RefCounted < Object
Навігація на 2D, яка описує трафаретну поверхню для вирівнювання.
Опис
Навігаційну сітку можна створити або за допомогою запікання за допомогою NavigationServer2D, або шляхом додавання вершин і масивів індексів опуклих полігонів вручну.
Щоб запекти навігаційну сітку, необхідно додати принаймні один контур, який визначає зовнішні межі запеченої області.
var new_navigation_mesh = NavigationPolygon.new()
var bounding_outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
new_navigation_mesh.add_outline(bounding_outline)
NavigationServer2D.bake_from_source_geometry_data(new_navigation_mesh, NavigationMeshSourceGeometryData2D.new());
$NavigationRegion2D.navigation_polygon = new_navigation_mesh
var newNavigationMesh = новий NavigationPolygon();
Vector2[] boundingOutline = [new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0)];
newNavigationMesh.AddOutline(boundingOutline);
NavigationServer2D.BakeFromSourceGeometryData(newNavigationMesh, new NavigationMeshSourceGeometryData2D());
GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;
Додавання вершин і індексів багатокутників вручну.
var new_navigation_mesh = NavigationPolygon.new()
var new_vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
new_navigation_mesh.vertices = нові_вершини
var new_polygon_indices = PackedInt32Array([0, 1, 2, 3])
new_navigation_mesh.add_polygon(new_polygon_indices)
$NavigationRegion2D.navigation_polygon = new_navigation_mesh
var newNavigationMesh = новий NavigationPolygon();
Vector2[] newVertices = [new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0)];
newNavigationMesh.Vertices = newVertices;
int[] newPolygonIndices = [0, 1, 2, 3];
newNavigationMesh.AddPolygon(newPolygonIndices);
GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
void |
add_outline(outline: PackedVector2Array) |
void |
add_outline_at_index(outline: PackedVector2Array, index: int) |
void |
add_polygon(polygon: PackedInt32Array) |
void |
clear() |
void |
|
void |
|
get_outline(idx: int) const |
|
get_outline_count() const |
|
get_parsed_collision_mask_value(layer_number: int) const |
|
get_polygon(idx: int) |
|
get_polygon_count() const |
|
get_vertices() const |
|
void |
|
void |
remove_outline(idx: int) |
void |
set_outline(idx: int, outline: PackedVector2Array) |
void |
set_parsed_collision_mask_value(layer_number: int, value: bool) |
void |
set_vertices(vertices: PackedVector2Array) |
Переліки
enum SamplePartitionType: 🔗
SamplePartitionType SAMPLE_PARTITION_CONVEX_PARTITION = 0
Опуклий розбив, що призводить до навігаційної сітки з опуклими полігонами.
SamplePartitionType SAMPLE_PARTITION_TRIANGULATE = 1
Тріангуляційне розбиття, яке призводить до навігаційної сітки з трикутними полігонами.
SamplePartitionType SAMPLE_PARTITION_MAX = 2
Представляємо розмір виразок вибіркиPartitionType enum.
enum ParsedGeometryType: 🔗
ParsedGeometryType PARSED_GEOMETRY_MESH_INSTANCES = 0
Пристрої сітчастих екземплярів як обструкції геометрії. До складу входить Polygon2D, MeshInstance2D, MultiMeshInstance2D, і TileMap вершини.
Сітчасті сітки є тільки при використанні 2D вершин поверхневого формату.
ParsedGeometryType PARSED_GEOMETRY_STATIC_COLLIDERS = 1
Парес StaticBody2D і TileMap коладери як обструкції геометрії. Збірник повинен бути в будь-якому з шарів, зазначених parsed_collision_mask.
ParsedGeometryType PARSED_GEOMETRY_BOTH = 2
Як PARSED_GEOMETRY_MESH_INSTANCES, так і PARSED_GEOMETRY_STATIC_COLLIDERS.
ParsedGeometryType PARSED_GEOMETRY_MAX = 3
Представляємо розмір ParsedGeometryType enum.
enum SourceGeometryMode: 🔗
SourceGeometryMode SOURCE_GEOMETRY_ROOT_NODE_CHILDREN = 0
Сканує дочірні вузли кореневого вузла, що рекурсивно за геометрію.
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN = 1
Сканування вузлів у групі та їх дочірніх вузлах, що рекурсують за геометрію. Група вказана source_geometry_group_name.
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2
Використання вузлів в групі для геометрії. Група вказана source_geometry_group_name.
SourceGeometryMode SOURCE_GEOMETRY_MAX = 3
Представляє розмір SourceGeometryMode enum.
Описи властивостей
Відстань для розмивання/стискання поверхні, по якій можна ходити, під час запікання навігаційної сітки.
Примітка: Радіус має бути рівним або більшим за 0.0. Якщо радіус дорівнює 0.0, неможливо буде виправити недійсні перекриття контурів та інші помилки точності під час процесу запікання. В результаті деякі перешкоди можуть бути неправильно виключені з остаточної навігаційної сітки або можуть видалити полігони навігаційної сітки.
Rect2 baking_rect = Rect2(0, 0, 0, 0) 🔗
Якщо випікання Rect2 має площу навігаційної сітки, яка буде обмежена до її огороджувальної площі.
Vector2 baking_rect_offset = Vector2(0, 0) 🔗
Зміщення позиції, застосоване до baking_rect Rect2.
Розмір ненавігованої кордону навколо зони випікання, визначеної baking_rec Rect2.
У поєднанні з baking_rec розмір кордону може бути використаний для випікання плитки вирівняних навігаторів без країв черепиці, що знаходяться в обручці agent_radius.
Розмір комірки, що використовується для стерилізації навігаторів сітки. Необхідно відповідати розміру комірки на карті навігації.
int parsed_collision_mask = 4294967295 🔗
Фізичні шари для сканування статичних комірок.
Тільки використовується при parsed_geometry_type PARSED_GEOMETRY_STATIC_COLLIDERS або PARSED_GEOMETRY_BOTH.
ParsedGeometryType parsed_geometry_type = 2 🔗
void set_parsed_geometry_type(value: ParsedGeometryType)
ParsedGeometryType get_parsed_geometry_type()
Визначає, який тип вузлів буде розібрано як геометрія.
SamplePartitionType sample_partition_type = 0 🔗
void set_sample_partition_type(value: SamplePartitionType)
SamplePartitionType get_sample_partition_type()
Алгоритм розбиття для створення полігонів навігаційної сітки.
StringName source_geometry_group_name = &"navigation_polygon_source_geometry_group" 🔗
void set_source_geometry_group_name(value: StringName)
StringName get_source_geometry_group_name()
Назва групи вузлів, які повинні бути припаровані для геометрії джерела випічки.
Тільки використовується при source_geometry_mode SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN або SOURCE_GEOMETRY_GROUPS_EXPLICIT.
SourceGeometryMode source_geometry_mode = 0 🔗
void set_source_geometry_mode(value: SourceGeometryMode)
SourceGeometryMode get_source_geometry_mode()
Джерело геометрії, що використовується під час випікання.
Описи методів
void add_outline(outline: PackedVector2Array) 🔗
Додаток PackedVector2Array, який містить вершини контуру до внутрішнього масиву, що містить всі контури.
void add_outline_at_index(outline: PackedVector2Array, index: int) 🔗
Додавання PackedVector2Array, що містить вершини контуру до внутрішнього масиву, що містить всі контури на фіксованому положенні.
void add_polygon(polygon: PackedInt32Array) 🔗
Додає полігон, використовуючи індекси вершин, отриманих під час виклику get_vertices().
void clear() 🔗
Очищає внутрішні масиви для вершин і індексів полігонів.
void clear_outlines() 🔗
Очищає масив контурів, але не зрозуміло вершин і полігонів, які були створені ними.
void clear_polygons() 🔗
Очищає масив полігонів, але не очищає масив контурів і вершин.
NavigationMesh get_navigation_mesh() 🔗
Повертає NavigationMesh, що є результатом цього навігаційного полігону. Цю навігаційну сітку можна використовувати для оновлення навігаційної сітки регіону безпосередньо за допомогою API NavigationServer3D.region_set_navigation_mesh().
PackedVector2Array get_outline(idx: int) const 🔗
Повернутися до PackedVector2Array, що містить вершини контуру, який був створений в редакторі або на скрипті.
int get_outline_count() const 🔗
Повертаємо кількість контурів, які були створені в редакторі або на скрипті.
bool get_parsed_collision_mask_value(layer_number: int) const 🔗
Повертає, чи увімкнено вказаний шар parsed_collision_mask, враховуючи значення layer_number від 1 до 32.
PackedInt32Array get_polygon(idx: int) 🔗
Повернення PackedInt32Array, що містить індекси вершин створеного полігону.
int get_polygon_count() const 🔗
Повертає кількість всіх полігонів.
PackedVector2Array get_vertices() const 🔗
Повертаємо PackedVector2Array, що містить всі вершини, які використовуються для створення полігонів.
void make_polygons_from_outlines() 🔗
Застаріло: Use NavigationServer2D.parse_source_geometry_data() and NavigationServer2D.bake_from_source_geometry_data() instead.
Створює полігони з контурів, доданих в редакторі або на скрипт.
void remove_outline(idx: int) 🔗
Видаліть текст, створений у редакторі або за допомогою скрипта. Щоб оновити полігони потрібно викликати _polygons_from_outlines().
void set_outline(idx: int, outline: PackedVector2Array) 🔗
Змінює контур, створене в редакторі або на скрипті. Щоб оновити полігони потрібно викликати _polygons_from_outlines().
void set_parsed_collision_mask_value(layer_number: int, value: bool) 🔗
На основі value, дозволяє або відключає вказаний шар в parsed_collision_mask, враховуючи шару_number між 1 і 32.
void set_vertices(vertices: PackedVector2Array) 🔗
Встановлює вершини, які потім можна індексувати для створення полігонів за допомогою методу add_polygon().