Подключение навигационных сеток

Различные NavigationMeshes автоматически объединяются NavigationServer, когда по крайней мере две позиции вершин одного ребра точно перекрываются.

Для подключения на произвольных расстояниях см. Использование NavigationLinks.

../../_images/navigation_vertex_merge.png

То же самое верно для нескольких ресурсов NavigationPolygon. Если точки их контуров точно перекрываются, NavigationServer их объединит. Для соединения контуры NavigationPolygon должны принадлежать разным ресурсам NavigationPolygon.

Перекрывающиеся или пересекающиеся контуры одного и того же NavigationPolygon приведут к сбою создания навигационной сетки. Перекрывающиеся или пересекающиеся контуры разных NavigationPolygon часто не позволяют создать соединения рёбер навигационной области на NavigationServer, поэтому их следует избегать.

../../_images/navigation_vertex_merge2.png

Предупреждение

"Точно (Exactly)" означает "точно (exactly)" для объединения позиций вершин. Небольшие ошибки с плавающей точкой, которые довольно часто возникают при импорте сеток, могут помешать успешному объединению вершин.

В качестве альтернативы, навигационные сетки не объединяются, но всё равно считаются соединёнными сервером NavigationServer, когда их края практически параллельны и находятся на небольшом расстоянии друг от друга. Расстояние соединения определяется параметром edge_connection_margin для каждой навигационной карты. Во многих случаях края навигационных сеток не могут быть правильно соединены при их частичном перекрытии. Для обеспечения согласованного поведения слияния рекомендуется избегать любого перекрытия навигационных сеток.

../../_images/navigation_edge_connection.png

Если отладка навигации включена и NavigationServer активен, установленные соединения навигационной сетки будут визуализированы. Подробнее о параметрах отладки навигации см. в документе Инструменты отладки навигации.

Значение 2D edge_connection_margin по умолчанию можно изменить в настройках проекта в разделе navigation/2d/default_edge_connection_margin.

Значение 3D edge_connection_margin по умолчанию можно изменить в настройках проекта в разделе navigation/3d/default_edge_connection_margin.

Значение поля соединения ребер любой навигационной карты также можно изменить во время выполнения с помощью API NavigationServer.

extends Node2D

func _ready() -> void:
    # 2D margins are designed to work with 2D "pixel" values.
    var default_map_rid: RID = get_world_2d().get_navigation_map()
    NavigationServer2D.map_set_edge_connection_margin(default_map_rid, 50.0)

Примечание

Изменение поля соединения ребер вызовет полное обновление всех соединений навигационной сетки на NavigationServer.