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...
NavigationRegion3D
Экспериментальное: This class may be changed or removed in future versions.
Наследует: Node3D < Node < Object
Проходимая трехмерная область, которую NavigationAgent3D может использовать для поиска пути.
Описание
Проходимая 3D-область на основе NavigationMesh, которую NavigationAgent3Ds может использовать для поиска пути.
Две области могут быть соединены друг с другом, если они имеют схожее ребро. Вы можете установить минимальное расстояние между двумя вершинами, необходимое для соединения двух ребер, с помощью NavigationServer3D.map_set_edge_connection_margin().
Примечание: Перекрытие навигационных сеток двух областей недостаточно для соединения двух областей. Они должны иметь схожее ребро.
Стоимость входа в эту область из другой области можно контролировать с помощью значения enter_cost.
Примечание: Это значение не добавляется к стоимости пути, если начальная позиция уже находится внутри этой области.
Стоимость перемещения на расстояние внутри этой области можно контролировать с помощью множителя travel_cost.
Примечание: Этот узел кэширует изменения своих свойств, поэтому если вы вносите изменения в базовую область RID в NavigationServer3D, они не будут отражены в свойствах этого узла.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
Методы
void |
bake_navigation_mesh(on_thread: bool = true) |
get_bounds() const |
|
get_navigation_layer_value(layer_number: int) const |
|
get_navigation_map() const |
|
get_region_rid() const |
|
get_rid() const |
|
is_baking() const |
|
void |
set_navigation_layer_value(layer_number: int, value: bool) |
void |
set_navigation_map(navigation_map: RID) |
Сигналы
bake_finished() 🔗
Уведомляет о завершении операции запекания навигационной сетки.
navigation_mesh_changed() 🔗
Уведомляет об изменении NavigationMesh.
Описания свойств
Определяет, включен или отключен NavigationRegion3D.
Когда поиск пути входит в навигационную сетку этого региона из навигационной сетки другого региона, значение enter_cost добавляется к расстоянию пути для определения кратчайшего пути.
Битовое поле, определяющее все навигационные слои, к которым принадлежит регион. Эти навигационные слои можно проверить при запросе пути с помощью NavigationServer3D.map_get_path().
NavigationMesh navigation_mesh 🔗
void set_navigation_mesh(value: NavigationMesh)
NavigationMesh get_navigation_mesh()
Ресурс NavigationMesh для использования.
При поиске пути внутри навигационной сетки этого региона пройденные расстояния умножаются на travel_cost для определения кратчайшего пути.
bool use_edge_connections = true 🔗
Если этот параметр включен, навигационная область будет использовать краевые соединения для соединения с другими навигационными областями, находящимися в непосредственной близости от границы краевых соединений навигационной карты.
Описания метода
void bake_navigation_mesh(on_thread: bool = true) 🔗
Выпекает NavigationMesh. Если on_thread установлен на true (по умолчанию), выпекание выполняется в отдельном потоке. Выпекание в отдельном потоке полезно, поскольку выпекание навигации — недешевая операция. После завершения оно автоматически устанавливает новый NavigationMesh. Обратите внимание, что выпекание в отдельном потоке может быть очень медленным, если геометрия анализируется из сеток, поскольку асинхронный доступ к каждой сетке подразумевает тяжелую синхронизацию. Также обратите внимание, что выпекание в отдельном потоке автоматически отключается в операционных системах, которые не могут использовать потоки (например, Web с отключенными потоками).
Возвращает выровненный по осям ограничивающий прямоугольник для преобразованной навигационной сетки региона.
bool get_navigation_layer_value(layer_number: int) const 🔗
Возвращает, включен ли указанный слой битовой маски navigation_layers, учитывая layer_number от 1 до 32.
RID get_navigation_map() const 🔗
Возвращает текущую навигационную карту RID, используемую в этом регионе.
Устарело: Use get_rid() instead.
Возвращает RID этого региона на NavigationServer3D.
Возвращает RID этого региона на NavigationServer3D. В сочетании с NavigationServer3D.map_get_closest_point_owner() может использоваться для определения NavigationRegion3D, ближайшего к точке на объединенной навигационной карте.
Возвращает true, когда NavigationMesh запекается в фоновом потоке.
void set_navigation_layer_value(layer_number: int, value: bool) 🔗
На основе value включает или отключает указанный слой в битовой маске navigation_layers, учитывая layer_number от 1 до 32.
void set_navigation_map(navigation_map: RID) 🔗
Устанавливает RID навигационной карты, которую должен использовать этот регион. По умолчанию регион автоматически присоединится к навигационной карте по умолчанию World3D, поэтому эта функция требуется только для переопределения карты по умолчанию.