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().