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, поэтому эта функция требуется только для переопределения карты по умолчанию.