Использование NavigationRegions

NavigationRegions — это визуальное представление узлов региона навигационной карты на NavigationServer. Каждый узел NavigationRegion содержит ресурс для данных навигационной сетки.

Доступны как 2D-, так и 3D-версии как NavigationRegion2D и NavigationRegion3D соответственно.

Отдельные NavigationRegions загружают данные о своих ресурсах 2D NavigationPolygon или 3D NavigationMesh на NavigationServer. Карта NavigationServer преобразует эту информацию в комбинированную навигационную карту для поиска пути.

Чтобы создать навигационную область с помощью дерева сцены, добавьте к сцене узел NavigationRegion2D или NavigationRegion3D. Для работы всех областей требуется ресурс навигационной сетки. Чтобы узнать, как создавать и применять навигационные сетки, см. Использование навигационных сеток.

NavigationRegions автоматически передают изменения global_transform в регион на NavigationServer, что делает их пригодными для использования на движущихся платформах. NavigationServer попытается соединить навигационные сетки отдельных регионов, когда они находятся достаточно близко. Подробнее см. Подключение навигационных сеток. Чтобы узнать, как соединить NavigationRegions на произвольных расстояниях, см. Использование NavigationLinks, чтобы узнать, как создавать и использовать NavigationLinks.

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

Изменение преобразования узла NavigationRegion приводит к изменению положения региона на NavigationServer, но изменение масштаба — нет. Ресурс навигационной сетки не имеет масштаба и должен быть полностью обновлен при изменении масштаба исходной геометрии.

Регионы можно включать и отключать. В случае отключения они не будут участвовать в будущих запросах поиска пути.

Примечание

Существующие пути не будут автоматически обновляться при включении/отключении региона.

Создание новых навигационных регионов

Новые узлы NavigationRegion будут автоматически регистрироваться на навигационной карте мира по умолчанию для их 2D/3D-измерения.

Затем RID региона можно получить из узлов NavigationRegion с помощью get_rid().

extends NavigationRegion2D

var navigationserver_region_rid: RID = get_rid()

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

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

extends Node2D

func _ready() -> void:
    var new_region_rid: RID = NavigationServer2D.region_create()
    var default_map_rid: RID = get_world_2d().get_navigation_map()
    NavigationServer2D.region_set_map(new_region_rid, default_map_rid)

Примечание

Регионы навигации можно назначить только одной навигационной карте. При назначении существующего региона новой навигационной карте он покинет старую карту.