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...
Використання NavigationMaps
NavigationMap — це абстрактний світ навігації на NavigationServer, ідентифікований NavigationServer RID.
Карта може містити та з’єднувати майже нескінченну кількість навігаційних областей з навігаційними сітками, щоб побудувати прохідні області ігрового світу для пошуку шляху.
Карта може містити агентів уникнення. Уникнення зіткнення буде розраховано на основі агентів, присутніх на карті.
Примітка
Різні навігаційні карти повністю ізольовані одна від одної, але навігаційні регіони та агенти уникнення можуть перемикатися між різними картами. Перемикачі почнуть діяти під час синхронізації NavigationServer.
Стандартні навігаційні карти
За замовчуванням Godot створює навігаційну карту для кожного World2D та World3D кореневого вікна перегляду.
RID двовимірної карти навігації за замовчуванням можна отримати за допомогою get_world_2d().get_navigation_map() з будь-якого вузла Node2D, що успадковує Node.
RID 3D-карти навігації за замовчуванням можна отримати за допомогою get_world_3d().get_navigation_map() з будь-якого вузла Node3D, що успадковує Node.
extends Node2D
func _ready() -> void:
var default_navigation_map_rid: RID = get_world_2d().get_navigation_map()
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
Rid defaultNavigationMapRid = GetWorld2D().NavigationMap;
}
}
extends Node3D
func _ready() -> void:
var default_navigation_map_rid: RID = get_world_3d().get_navigation_map()
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
Rid defaultNavigationMapRid = GetWorld3D().NavigationMap;
}
}
Створення нових навігаційних карт
NavigationServer може створювати та підтримувати стільки навігаційних карт, скільки потрібно для конкретного ігрового процесу. Додаткові навігаційні карти створюються та обробляються безпосередньо за допомогою NavigationServer API, наприклад. для підтримки різних типів пересування агентів уникнення або акторів.
Для прикладу використання різних навігаційних карт див. Підтримка різних типів акторів і Підтримуйте пересування різних акторів.
Кожна навігаційна карта окремо синхронізує зміни в черзі для своїх навігаційних регіонів і агентів уникнення. Навігаційна карта, яка не отримала змін, оброблятиметься майже без часу. Навігаційні регіони та агенти уникнення можуть бути лише частиною однієї навігаційної карти, але вони можуть будь-коли змінити карту.
Примітка
Перемикач карти навігації почне діяти лише після наступної синхронізації NavigationServer.
extends Node2D
func _ready() -> void:
var new_navigation_map: RID = NavigationServer2D.map_create()
NavigationServer2D.map_set_active(new_navigation_map, true)
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
Rid newNavigationMap = NavigationServer2D.MapCreate();
NavigationServer2D.MapSetActive(newNavigationMap, true);
}
}
extends Node3D
func _ready() -> void:
var new_navigation_map: RID = NavigationServer3D.map_create()
NavigationServer3D.map_set_active(new_navigation_map, true)
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
Rid newNavigationMap = NavigationServer3D.MapCreate();
NavigationServer3D.MapSetActive(newNavigationMap, true);
}
}
Примітка
Немає різниці між навігаційними картами, створеними за допомогою API NavigationServer2D або API NavigationServer3D.