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.