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.

Використання NavigationRegions

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

Версії 2D і 3D доступні як NavigationRegion2D і NavigationRegion3D відповідно.

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

Щоб створити область навігації за допомогою дерева сцени, додайте до сцени вузол NavigationRegion2D або NavigationRegion3D. Для функціонування всіх регіонів потрібен ресурс навігаційної сітки. Перегляньте Використання навігаційних сіток, щоб дізнатися, як створювати та застосовувати навігаційні сітки.

NavigationRegions автоматично надсилає зміни global_transform до регіону на NavigationServer, що робить їх придатними для переміщення платформ. NavigationServer спробує підключити навігаційні сітки окремих регіонів, коли вони будуть достатньо близько. Для отримання додаткової інформації див. Підключення навігаційних сіток. Щоб з’єднати NavigationRegions на довільній відстані, перегляньте Використання навігаційних посилань, щоб дізнатися, як створити та використовувати NavigationLinks.

Попередження

Хоча зміна перетворення вузла NavigationRegion оновлює позицію області на NavigationServer, зміна масштабу – ні. Ресурс навігаційної сітки не має масштабу і потребує повного оновлення, коли геометрія джерела змінює масштаб.

Регіони можна ввімкнути або вимкнути, і якщо вимкнено, вони не сприятимуть майбутнім запитам пошуку шляху.

Примітка

Існуючі шляхи не оновлюватимуться автоматично, коли регіон увімкнено/вимкнено.

Створення нових областей навігації

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

Потім RID регіону можна отримати з вузлів NavigationRegion за допомогою get_rid().

extends NavigationRegion2D

var navigationserver_region_rid: RID = get_rid()

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

Якщо регіони створюються безпосередньо за допомогою NavigationServer API, їм потрібно призначити навігаційну карту вручну.

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)

Примітка

Області навігації можна призначити лише одній навігаційній карті. Якщо існуючий регіон буде призначено для нової навігаційної карти, він залишить стару карту.