NavigationObstacle3D
Экспериментальное: This class may be changed or removed in future versions.
Наследует: Node3D < Node < Object
Трехмерное препятствие, используемое для воздействия на запекание навигационной сетки или ограничения скорости агентов, управляемых для избегания.
Описание
Для корректной работы препятствию необходимо определить навигационную карту и контур vertices. Контуры не могут пересекаться или накладываться друг на друга и ограничены проекцией плоскости. Это означает, что ось Y вершин игнорируется, вместо этого для размещения используется глобальная позиция препятствия по оси Y. Спроецированная форма выдавливается высотой препятствия вдоль оси Y.
Препятствия могут быть включены в процесс запекания навигационной сетки, когда включен 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 и height, определенных в форме.
bool avoidance_enabled = true 🔗
Если true, препятствие влияет на избегание с помощью агентов.
Битовое поле, определяющее слои избегания для этого препятствия. Агенты с соответствующим битом в маске избегания будут избегать этого препятствия.
bool carve_navigation_mesh = false 🔗
Если включено, вершины препятствий будут вырезаны в запеченной навигационной сетке с формой, не затронутой дополнительными смещениями (например, радиусом агента).
На нее по-прежнему будет влиять дальнейшая постобработка процесса запекания, например упрощение ребер и полигонов.
Требуется включение affect_navigation_mesh.
Устанавливает высоту препятствия, используемую при 2D-избегании. 2D-избегание с использованием игнорирования агентом препятствий, которые находятся ниже или выше него.
Устанавливает радиус обхода препятствия.
bool use_3d_avoidance = false 🔗
Если true, препятствие влияет на 3D-избегание с использованием агентов с препятствием radius.
Если false, препятствие влияет на 2D-избегание с использованием агентов как с препятствием vertices, так и с препятствием radius.
Vector3 velocity = Vector3(0, 0, 0) 🔗
Устанавливает желаемую скорость для препятствия, чтобы другие агенты могли лучше предсказать препятствие, если оно перемещается со скоростью регулярно (каждый кадр) вместо того, чтобы деформироваться в новое положение. Влияет только на избегание для препятствий radius. Ничего не делает для статических вершин препятствий.
PackedVector3Array vertices = PackedVector3Array() 🔗
void set_vertices(value: PackedVector3Array)
PackedVector3Array get_vertices()
Контурные вершины препятствия. Если вершины закручены по часовой стрелке, агенты будут вдавлены препятствием, в противном случае они будут вытолкнуты. Контуры не могут пересекаться или накладываться друг на друга. Если вершины, использующие препятствие, деформируются в новое положение, агенты не могут предсказать это движение и могут оказаться в ловушке внутри препятствия.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector3Array 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 этого препятствия на NavigationServer3D.
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.