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...
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.