NavigationObstacle3D
Трехмерное препятствие, используемое для воздействия на запекание навигационной сетки или ограничения скорости агентов, управляемых для избегания.
Трехмерное препятствие, используемое для воздействия на запекание навигационной сетки или ограничения скорости агентов, управляемых для избегания.
Для корректной работы препятствию необходимо определить навигационную карту и контур NavigationObstacle3D.Vertices. Контуры не могут пересекаться или накладываться друг на друга и ограничены проекцией плоскости. Это означает, что ось Y вершин игнорируется, вместо этого для размещения используется глобальная позиция препятствия по оси Y. Спроецированная форма выдавливается высотой препятствия вдоль оси Y.
Препятствия могут быть включены в процесс запекания навигационной сетки, когда включен NavigationObstacle3D.AffectNavigationMesh. Они не добавляют проходимую геометрию, вместо этого их роль заключается в отбрасывании другой исходной геометрии внутри формы. Это можно использовать для предотвращения появления навигационной сетки в нежелательных местах, например, внутри "сплошной" геометрии или поверх нее. Если включен NavigationObstacle3D.CarveNavigationMesh, запеченная форма не будет затронута смещениями запекания навигационной сетки, например, радиусом агента.
С NavigationObstacle3D.AvoidanceEnabled препятствие может ограничивать скорости избегания агентов избегания. Если вершины препятствия закручены по часовой стрелке, агенты избегания будут вдавленны препятствием, в противном случае агенты избегания будут вытолкнуты. Препятствия, использующие вершины и избегание, могут деформироваться в новое положение, но не должны перемещаться в каждом кадре, поскольку каждое изменение требует перестройки карты избегания.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
NavigationObstacle3DКонструктор
public NavigationObstacle3D();Свойства9
AffectNavigationMeshСвойство
public bool AffectNavigationMesh { get; set; }Если включено и проанализировано в процессе запекания навигационной сетки, препятствие отбросит исходную геометрию внутри его NavigationObstacle3D.Vertices и NavigationObstacle3D.Height, определенных в форме.
AvoidanceEnabledСвойство
public bool AvoidanceEnabled { get; set; }Если true, препятствие влияет на избегание с помощью агентов.
AvoidanceLayersСвойство
public uint AvoidanceLayers { get; set; }Битовое поле, определяющее слои избегания для этого препятствия. Агенты с соответствующим битом в маске избегания будут избегать этого препятствия.
CarveNavigationMeshСвойство
public bool CarveNavigationMesh { get; set; }Если включено, вершины препятствий будут вырезаны в запеченной навигационной сетке с формой, не затронутой дополнительными смещениями (например, радиусом агента).
На нее по-прежнему будет влиять дальнейшая постобработка процесса запекания, например упрощение ребер и полигонов.
Требуется включение NavigationObstacle3D.AffectNavigationMesh.
HeightСвойство
public float Height { get; set; }Устанавливает высоту препятствия, используемую при 2D избежании. 2D избегание с использованием агентов игнорирует препятствия, которые ниже или выше.
Радиус
RadiusСвойство
public float Radius { get; set; }Устанавливает радиус обхода препятствия.
Use3DAvoidanceСвойство
public bool Use3DAvoidance { get; set; }Если true препятствие влияет на 3D уклонение с использованием агентов с препятствиями NavigationObstacle3D.Radius.
Если false b) препятствие влияет на 2D уклонение с использованием агентов, имеющих оба препятствия; NavigationObstacle3D.Vertices а также препятствия NavigationObstacle3D.Radius.
VelocityСвойство
public Vector3 Velocity { get; set; }Запрашиваемая скорость препятствия, которая используется другими агентами для более точного прогнозирования препятствия, если она регулярно двигается со скоростью (каждый кадр), а не в новой позиции.
Примечание: Это имущество влияет только на уклонение от препятствий NavigationObstacle3D.RadiusНичего не делает для статических вершин препятствия.
VerticesСвойство
public Vector3[] Vertices { get; set; }Вертикальные вершины препятствия. Если вершины ветряны по часовой стрелке, то агенты будут выталкиваться через препятствие, в противном случае они будут вытесняться. Контуры не могут быть пересечены или перекрываются. Если препятствие перевернуто на новое положение, агенты не могут предсказать это движение и могут попасть внутрь препятствия.
Методы24
GetAffectNavigationMeshbool
public bool GetAffectNavigationMesh();boolGetAvoidanceEnabledbool
public bool GetAvoidanceEnabled();boolGetAvoidanceLayerValuebool
public bool GetAvoidanceLayerValue(int layerNumber);Возвращается ли указанный слой NavigationObstacle3D.AvoidanceLayers Включена битмаска, при условии a layer_number от 1 до 32 лет.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
boolGetAvoidanceLayersuint
public uint GetAvoidanceLayers();uintGetCarveNavigationMeshbool
public bool GetCarveNavigationMesh();boolGetHeightfloat
public float GetHeight();floatGetNavigationMapRid
public Rid GetNavigationMap();Возвращает Rid навигационной карты для этого узла NavigationObstacle. Эта функция всегда возвращает набор карт на узле NavigationObstacle, а не карту абстрактного препятствия на NavigationServer. Если карта препятствий изменяется напрямую с помощью API Навигационный Сервер, узел NavigationObstacle не будет знать об изменении карты. Используйте NavigationObstacle3D.SetNavigationMap, чтобы изменить навигационную карту для NavigationObstacle, а также обновить препятствие на NavigationServer.
RidGetRadiusfloat
public float GetRadius();floatGetRidRid
public Rid GetRid();Возвращает Rid этого препятствия на NavigationServer3D.
RidGetUse3DAvoidancebool
public bool GetUse3DAvoidance();boolGetVelocityVector3
public Vector3 GetVelocity();Vector3GetVerticesVector3[]
public Vector3[] GetVertices();Vector3[]SetAffectNavigationMeshvoid
public void SetAffectNavigationMesh(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetAvoidanceEnabledvoid
public void SetAvoidanceEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetAvoidanceLayerValuevoid
public void SetAvoidanceLayerValue(int layerNumber, bool value);На основе value включает или отключает указанный слой в битовой маске NavigationObstacle3D.AvoidanceLayers, учитывая layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
SetAvoidanceLayersvoid
public void SetAvoidanceLayers(uint layers);| Имя | Тип | По умолчанию |
|---|---|---|
layers | uint | — |
SetCarveNavigationMeshvoid
public void SetCarveNavigationMesh(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetHeightvoid
public void SetHeight(float height);| Имя | Тип | По умолчанию |
|---|---|---|
height | float | — |
SetNavigationMapvoid
public void SetNavigationMap(Rid navigationMap);Устанавливает Rid навигационной карты, которую должен использовать этот узел NavigationObstacle, а также обновляет obstacle на NavigationServer.
| Имя | Тип | По умолчанию |
|---|---|---|
navigationMap | Rid | — |
SetRadiusvoid
public void SetRadius(float radius);| Имя | Тип | По умолчанию |
|---|---|---|
radius | float | — |
SetUse3DAvoidancevoid
public void SetUse3DAvoidance(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetVelocityvoid
public void SetVelocity(Vector3 velocity);| Имя | Тип | По умолчанию |
|---|---|---|
velocity | Vector3 | — |
SetVertices2 перегрузки
public void SetVertices(Vector3[] vertices);| Имя | Тип | По умолчанию |
|---|---|---|
vertices | Vector3[] | — |
public void SetVertices(ReadOnlySpan<Vector3> vertices);| Имя | Тип | По умолчанию |
|---|---|---|
vertices | ReadOnlySpan<Vector3> | — |