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...
NavigationObstacle2D
Экспериментальное: This class may be changed or removed in future versions.
Наследует: Node2D < CanvasItem < Node < Object
Двумерное препятствие, используемое для воздействия на запекание навигационной сетки или ограничения скорости агентов, управляемых для избегания.
Описание
Для корректной работы препятствия необходимо определить навигационную карту и контур vertices. Контуры не могут пересекаться или накладываться друг на друга.
Препятствия могут быть включены в процесс запекания навигационной сетки, если включен affect_navigation_mesh. Они не добавляют проходимую геометрию, вместо этого их роль заключается в отбрасывании другой исходной геометрии внутри формы. Это можно использовать для предотвращения появления навигационной сетки в нежелательных местах. Если включен carve_navigation_mesh, запеченная форма не будет зависеть от смещений запекания навигационной сетки, например радиуса агента.
С Avoidance_enabled препятствие может ограничивать скорости избегания с использованием агентов. Если вершины препятствия закручены по часовой стрелке, агенты избегания будут выталкиваться в препятствие, в противном случае агенты избегания будут выталкиваться из препятствия. Препятствия, использующие вершины и уклонение, могут перемещаться в новое положение, но их не следует перемещать в каждом кадре, поскольку каждое изменение требует перестройки карты уклонения.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
get_avoidance_layer_value(layer_number: int) const |
|
get_navigation_map() const |
|
get_rid() const |
|
void |
set_avoidance_layer_value(layer_number: int, value: bool) |
void |
set_navigation_map(navigation_map: RID) |
Описания свойств
bool affect_navigation_mesh = false 🔗
Если включено и проанализировано в процессе запекания навигационной сетки, препятствие отбросит исходную геометрию внутри его определенной формы vertices.
bool avoidance_enabled = true 🔗
Если true, препятствие влияет на избегание с помощью агентов.
Битовое поле, определяющее слои избегания для этого препятствия. Агенты с соответствующим битом в маске избегания будут избегать этого препятствия.
bool carve_navigation_mesh = false 🔗
Если включено, вершины препятствий будут вырезаны в запеченной навигационной сетке с формой, не затронутой дополнительными смещениями (например, радиусом агента).
На нее по-прежнему будет влиять дальнейшая постобработка процесса запекания, например упрощение ребер и полигонов.
Требуется включение affect_navigation_mesh.
Устанавливает радиус обхода препятствия.
Vector2 velocity = Vector2(0, 0) 🔗
Устанавливает желаемую скорость для препятствия, чтобы другие агенты могли лучше предсказать препятствие, если оно перемещается со скоростью регулярно (каждый кадр) вместо того, чтобы деформироваться в новое положение. Влияет только на избегание для препятствий radius. Ничего не делает для статических вершин препятствий.
PackedVector2Array vertices = PackedVector2Array() 🔗
void set_vertices(value: PackedVector2Array)
PackedVector2Array get_vertices()
Контурные вершины препятствия. Если вершины закручены по часовой стрелке, агенты будут вдавлены препятствием, в противном случае они будут вытолкнуты. Контуры не могут пересекаться или накладываться друг на друга. Если вершины, использующие препятствие, деформируются в новое положение, агенты не могут предсказать это движение и могут оказаться в ловушке внутри препятствия.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector2Array for more details.
Описания метода
bool get_avoidance_layer_value(layer_number: int) const 🔗
Возвращает, включен ли указанный слой битовой маски Avoidance_layers, учитывая layer_number от 1 до 32.
RID get_navigation_map() const 🔗
Возвращает RID навигационной карты для этого узла NavigationObstacle. Эта функция всегда возвращает набор карт на узле NavigationObstacle, а не карту абстрактного препятствия на NavigationServer. Если карта препятствий изменяется напрямую с помощью API NavigationServer, узел NavigationObstacle не будет знать об изменении карты. Используйте set_navigation_map(), чтобы изменить навигационную карту для NavigationObstacle, а также обновить препятствие на NavigationServer.
Возвращает RID этого препятствия на NavigationServer2D.
void set_avoidance_layer_value(layer_number: int, value: bool) 🔗
На основе value включает или отключает указанный слой в битовой маске avoidance_layers, учитывая layer_number от 1 до 32.
void set_navigation_map(navigation_map: RID) 🔗
Устанавливает RID навигационной карты, которую должен использовать этот узел NavigationObstacle, а также обновляет obstacle на NavigationServer.