NavigationMesh
Навигационная сетка, определяющая проходимую территорию и препятствия.
Навигационная сетка, определяющая проходимую территорию и препятствия.
Навигационная сетка представляет собой набор полигонов, которые определяют, по каким областям среды можно перемещатся, чтобы помочь агентам находить путь в сложных пространствах.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
NavigationMeshКонструктор
public NavigationMesh();Свойства26
AgentHeightСвойство
public float AgentHeight { get; set; }Высота свободного пространства для запекания 3D. Не изменяет физическую форму персонажа и не перезапекает готовый меш при присваивании. В проверке одинаковый потолок 1,5 пропускает вариант высоты 1, но не 2; результат зависит также от разрешения построения.
AgentMaxClimbСвойство
public float AgentMaxClimb { get; set; }Минимальная высота уступа, которая считается все еще проходимой.
Примечание: При выпечке это значение будет округлено до ближайшего кратного NavigationMesh.CellHeight.
AgentMaxSlopeСвойство
public float AgentMaxSlope { get; set; }Максимальный уклон, который считается пригодным для ходьбы, в градусах.
AgentRadiusСвойство
public float AgentRadius { get; set; }Радиус зазора для запекания проходимой области. Изменение параметра не перезапекает уже построенный ресурс автоматически; после запекания проверьте границы и путь. Это не радиус физической формы или механизма избегания.
BorderSizeСвойство
public float BorderSize { get; set; }Размер ненавигируемой границы вокруг области запекания.
В сочетании со значением NavigationMesh.FilterBakingAabb и значением NavigationMesh.EdgeMaxError, равным 1.0 или меньше размера границы, может использоваться для запекания навигационных сеток, выровненных по тайлам, без уменьшения краёв тайлов на NavigationMesh.AgentRadius.
Примечание: Если это значение не равно 0.0, оно будет округлено до ближайшего значения, кратного NavigationMesh.CellSize во время запекания.
CellHeightСвойство
public float CellHeight { get; set; }Ячейка высоты, используемая для растеризации вершин навигационной сетки по оси Y. Должна совпадать с высотой ячейки на навигационной карте.
CellSizeСвойство
public float CellSize { get; set; }Ячейка высоты, используемая для растеризации вершин навигационной сетки на плоскости XZ. Должна совпадать с размером ячейки на навигационной карте.
DetailSampleDistanceСвойство
public float DetailSampleDistance { get; set; }Расстояние выборки, используемое при создании сетки детализации, в единицах ячеек.
DetailSampleMaxErrorСвойство
public float DetailSampleMaxError { get; set; }Максимальное расстояние, на которое должна отклоняться поверхность сетки детали от поля высоты, в единицах ячеек.
EdgeMaxErrorСвойство
public float EdgeMaxError { get; set; }Максимальное расстояние, на которое края упрощенного контура должны отклоняться от исходного необработанного контура.
EdgeMaxLengthСвойство
public float EdgeMaxLength { get; set; }Максимально допустимая длина контурных кромок вдоль границы сетки. Значение 0.0 отключает эту функцию.
Примечание: При запекании это значение будет округлено до ближайшего кратного NavigationMesh.CellSize.
FilterBakingAabbСвойство
public Aabb FilterBakingAabb { get; set; }Если запекание Aabb имеет объем, запекание навигационной сетки будет ограничено его охватывающей областью.
FilterBakingAabbOffsetСвойство
public Vector3 FilterBakingAabbOffset { get; set; }Смещение позиции, примененное к NavigationMesh.FilterBakingAabb Aabb.
FilterLedgeSpansСвойство
public bool FilterLedgeSpans { get; set; }Если true, то пролеты, являющиеся уступами, помечаются как непроходимые.
FilterLowHangingObstaclesСвойство
public bool FilterLowHangingObstacles { get; set; }Если true, то непроходимые участки помечаются как проходимые, если их максимум находится в пределах NavigationMesh.AgentMaxClimb от проходимого соседа.
FilterWalkableLowHeightSpansСвойство
public bool FilterWalkableLowHeightSpans { get; set; }Если true, то проходящие пролеты помечаются как непроходимые, если просвет над пролетом меньше, чем NavigationMesh.AgentHeight.
GeometryCollisionMaskСвойство
public uint GeometryCollisionMask { get; set; }Физические слои для сканирования на предмет статических коллайдеров.
Используется только когда NavigationMesh.GeometryParsedGeometryType равен NavigationMesh.ParsedGeometryType.StaticColliders или NavigationMesh.ParsedGeometryType.Both.
GeometryParsedGeometryTypeСвойство
public NavigationMesh.ParsedGeometryType GeometryParsedGeometryType { get; set; }Определяет, какой тип узлов будет анализироваться как геометрия.
GeometrySourceGeometryModeСвойство
public NavigationMesh.SourceGeometryMode GeometrySourceGeometryMode { get; set; }Источник геометрии, используемой при выпечке.
GeometrySourceGroupNameСвойство
public StringName GeometrySourceGroupName { get; set; }Имя группы для сканирования геометрии.
Используется только когда NavigationMesh.GeometrySourceGeometryMode равно NavigationMesh.SourceGeometryMode.GroupsWithChildren или NavigationMesh.SourceGeometryMode.GroupsExplicit.
PolygonsСвойство
public Reckfell.Collections.Array Polygons { get; set; }RegionMergeSizeСвойство
public float RegionMergeSize { get; set; }Любые регионы с размером меньше этого будут объединены с регионами большего размера, если это возможно. Примечание: Это значение будет возведено в квадрат для расчета количества ячеек. Например, значение 20 установит количество ячеек равным 400.
RegionMinSizeСвойство
public float RegionMinSize { get; set; }Минимальный размер региона для его создания. Примечание: Это значение будет возведено в квадрат для расчета минимального количества ячеек, разрешенных для формирования изолированных островных областей. Например, значение 8 установит количество ячеек равным 64.
SamplePartitionTypeСвойство
public NavigationMesh.SamplePartitionTypeEnum SamplePartitionType { get; set; }Алгоритм разбиения для создания полигонов навигационной сетки.
VerticesСвойство
public Vector3[] Vertices { get; set; }VerticesPerPolygonСвойство
public float VerticesPerPolygon { get; set; }Максимально допустимое количество вершин для полигонов, создаваемых в процессе преобразования контура в полигон.
Методы60
AddPolygon2 перегрузки
public void AddPolygon(int[] polygon);Добавляет полигон, используя индексы вершин, которые вы получаете при вызове NavigationMesh.GetVertices.
| Имя | Тип | По умолчанию |
|---|---|---|
polygon | int[] | — |
public void AddPolygon(ReadOnlySpan<int> polygon);Добавляет полигон, используя индексы вершин, которые вы получаете при вызове NavigationMesh.GetVertices.
| Имя | Тип | По умолчанию |
|---|---|---|
polygon | ReadOnlySpan<int> | — |
Clearvoid
public void Clear();Очищает внутренние массивы вершин и индексов полигонов.
ClearPolygonsvoid
public void ClearPolygons();Очищает массив полигонов, но не очищает массив вершин.
CreateFromMeshvoid
public void CreateFromMesh(Mesh mesh);Инициализирует навигационную сетку, устанавливая вершины и индексы в соответствии с Mesh.
Примечание: Заданная mesh должна иметь тип Mesh.PrimitiveType.Triangles и иметь массив индексов.
| Имя | Тип | По умолчанию |
|---|---|---|
mesh | Mesh | — |
GetAgentHeightfloat
public float GetAgentHeight();Читает настроенную высоту запекания, а не проверяет текущую физическую высоту персонажа.
floatНастроенное значение AgentHeight. Оно само не доказывает, что ресурс уже запечён с этим параметром.
GetAgentMaxClimbfloat
public float GetAgentMaxClimb();floatGetAgentMaxSlopefloat
public float GetAgentMaxSlope();floatGetAgentRadiusfloat
public float GetAgentRadius();floatGetBorderSizefloat
public float GetBorderSize();floatGetCellHeightfloat
public float GetCellHeight();floatGetCellSizefloat
public float GetCellSize();floatGetCollisionMaskuint
public uint GetCollisionMask();uintGetCollisionMaskValuebool
public bool GetCollisionMaskValue(int layerNumber);Возвращает, включен ли указанный слой NavigationMesh.GeometryCollisionMask, учитывая layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
boolGetDetailSampleDistancefloat
public float GetDetailSampleDistance();floatGetDetailSampleMaxErrorfloat
public float GetDetailSampleMaxError();floatGetEdgeMaxErrorfloat
public float GetEdgeMaxError();floatGetEdgeMaxLengthfloat
public float GetEdgeMaxLength();floatGetFilterBakingAabbAabb
public Aabb GetFilterBakingAabb();AabbGetFilterBakingAabbOffsetVector3
public Vector3 GetFilterBakingAabbOffset();Vector3GetFilterLedgeSpansbool
public bool GetFilterLedgeSpans();boolGetFilterLowHangingObstaclesbool
public bool GetFilterLowHangingObstacles();boolGetFilterWalkableLowHeightSpansbool
public bool GetFilterWalkableLowHeightSpans();boolGetParsedGeometryTypeNavigationMesh.ParsedGeometryType
public NavigationMesh.ParsedGeometryType GetParsedGeometryType();NavigationMesh.ParsedGeometryTypeGetPolygonint[]
public int[] GetPolygon(int idx);Возвращает int[], содержащий индексы вершин созданного полигона.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
int[]GetPolygonCountint
public int GetPolygonCount();Возвращает число полигонов навигационного ресурса. Значение больше нуля подтверждает наличие данных, но не готовность карты, достижимость цели или физический зазор персонажа.
intКоличество полигонов; 0 означает отсутствие готовых полигонов в этом ресурсе.
GetRegionMergeSizefloat
public float GetRegionMergeSize();floatGetRegionMinSizefloat
public float GetRegionMinSize();floatGetSamplePartitionTypeNavigationMesh.SamplePartitionTypeEnum
public NavigationMesh.SamplePartitionTypeEnum GetSamplePartitionType();NavigationMesh.SamplePartitionTypeEnumGetSourceGeometryModeNavigationMesh.SourceGeometryMode
public NavigationMesh.SourceGeometryMode GetSourceGeometryMode();NavigationMesh.SourceGeometryModeGetSourceGroupNameStringName
public StringName GetSourceGroupName();StringNameGetVerticesVector3[]
public Vector3[] GetVertices();Возвращает Vector3[], содержащий все вершины, используемые для создания полигонов.
Vector3[]GetVerticesPerPolygonfloat
public float GetVerticesPerPolygon();floatSetAgentHeightvoid
public void SetAgentHeight(float agentHeight);Высота свободного пространства для запекания 3D. Не изменяет физическую форму персонажа и не перезапекает готовый меш при присваивании. В проверке одинаковый потолок 1,5 пропускает вариант высоты 1, но не 2; результат зависит также от разрешения построения.
| Имя | Тип | По умолчанию |
|---|---|---|
agentHeight | float | — |
agentHeightНеотрицательная высота в единицах исходной геометрии. После изменения выполните новое запекание.
SetAgentMaxClimbvoid
public void SetAgentMaxClimb(float agentMaxClimb);| Имя | Тип | По умолчанию |
|---|---|---|
agentMaxClimb | float | — |
SetAgentMaxSlopevoid
public void SetAgentMaxSlope(float agentMaxSlope);| Имя | Тип | По умолчанию |
|---|---|---|
agentMaxSlope | float | — |
SetAgentRadiusvoid
public void SetAgentRadius(float agentRadius);| Имя | Тип | По умолчанию |
|---|---|---|
agentRadius | float | — |
SetBorderSizevoid
public void SetBorderSize(float borderSize);| Имя | Тип | По умолчанию |
|---|---|---|
borderSize | float | — |
SetCellHeightvoid
public void SetCellHeight(float cellHeight);| Имя | Тип | По умолчанию |
|---|---|---|
cellHeight | float | — |
SetCellSizevoid
public void SetCellSize(float cellSize);| Имя | Тип | По умолчанию |
|---|---|---|
cellSize | float | — |
SetCollisionMaskvoid
public void SetCollisionMask(uint mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | uint | — |
SetCollisionMaskValuevoid
public void SetCollisionMaskValue(int layerNumber, bool value);На основе value включает или отключает указанный слой в NavigationMesh.GeometryCollisionMask при заданном layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
SetDetailSampleDistancevoid
public void SetDetailSampleDistance(float detailSampleDist);| Имя | Тип | По умолчанию |
|---|---|---|
detailSampleDist | float | — |
SetDetailSampleMaxErrorvoid
public void SetDetailSampleMaxError(float detailSampleMaxError);| Имя | Тип | По умолчанию |
|---|---|---|
detailSampleMaxError | float | — |
SetEdgeMaxErrorvoid
public void SetEdgeMaxError(float edgeMaxError);| Имя | Тип | По умолчанию |
|---|---|---|
edgeMaxError | float | — |
SetEdgeMaxLengthvoid
public void SetEdgeMaxLength(float edgeMaxLength);| Имя | Тип | По умолчанию |
|---|---|---|
edgeMaxLength | float | — |
SetFilterBakingAabbvoid
public void SetFilterBakingAabb(Aabb bakingAabb);| Имя | Тип | По умолчанию |
|---|---|---|
bakingAabb | Aabb | — |
SetFilterBakingAabbOffsetvoid
public void SetFilterBakingAabbOffset(Vector3 bakingAabbOffset);| Имя | Тип | По умолчанию |
|---|---|---|
bakingAabbOffset | Vector3 | — |
SetFilterLedgeSpansvoid
public void SetFilterLedgeSpans(bool filterLedgeSpans);| Имя | Тип | По умолчанию |
|---|---|---|
filterLedgeSpans | bool | — |
SetFilterLowHangingObstaclesvoid
public void SetFilterLowHangingObstacles(bool filterLowHangingObstacles);| Имя | Тип | По умолчанию |
|---|---|---|
filterLowHangingObstacles | bool | — |
SetFilterWalkableLowHeightSpansvoid
public void SetFilterWalkableLowHeightSpans(bool filterWalkableLowHeightSpans);| Имя | Тип | По умолчанию |
|---|---|---|
filterWalkableLowHeightSpans | bool | — |
SetParsedGeometryTypevoid
public void SetParsedGeometryType(NavigationMesh.ParsedGeometryType geometryType);| Имя | Тип | По умолчанию |
|---|---|---|
geometryType | NavigationMesh.ParsedGeometryType | — |
SetRegionMergeSizevoid
public void SetRegionMergeSize(float regionMergeSize);| Имя | Тип | По умолчанию |
|---|---|---|
regionMergeSize | float | — |
SetRegionMinSizevoid
public void SetRegionMinSize(float regionMinSize);| Имя | Тип | По умолчанию |
|---|---|---|
regionMinSize | float | — |
SetSamplePartitionTypevoid
public void SetSamplePartitionType(NavigationMesh.SamplePartitionTypeEnum samplePartitionType);| Имя | Тип | По умолчанию |
|---|---|---|
samplePartitionType | NavigationMesh.SamplePartitionTypeEnum | — |
SetSourceGeometryModevoid
public void SetSourceGeometryMode(NavigationMesh.SourceGeometryMode mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | NavigationMesh.SourceGeometryMode | — |
SetSourceGroupNamevoid
public void SetSourceGroupName(StringName mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | StringName | — |
SetVertices2 перегрузки
public void SetVertices(Vector3[] vertices);Задает вершины, которые затем можно индексировать для создания полигонов с помощью метода NavigationMesh.AddPolygon.
| Имя | Тип | По умолчанию |
|---|---|---|
vertices | Vector3[] | — |
public void SetVertices(ReadOnlySpan<Vector3> vertices);Задает вершины, которые затем можно индексировать для создания полигонов с помощью метода NavigationMesh.AddPolygon.
| Имя | Тип | По умолчанию |
|---|---|---|
vertices | ReadOnlySpan<Vector3> | — |
SetVerticesPerPolygonvoid
public void SetVerticesPerPolygon(float verticesPerPolygon);| Имя | Тип | По умолчанию |
|---|---|---|
verticesPerPolygon | float | — |
NavigationMesh.ParsedGeometryType
| Значение | Описание |
|---|---|
Both = 2 | Оба |
Max = 3 | Представляет размер перечисления |
MeshInstances = 0 | Анализирует экземпляры сетки как геометрию. Сюда входят узлы |
StaticColliders = 1 | Анализирует коллайдеры |
NavigationMesh.SamplePartitionTypeEnum
| Значение | Описание |
|---|---|
Layers = 2 | Разделение слоев. Хороший выбор для использования в мозаичной навигационной сетке с тайлами среднего и малого размера. |
Max = 3 | Представляет размер перечисления |
Monotone = 1 | Монотонное разбиение. Используйте это, если вам нужна быстрая генерация навигационной сетки. |
Watershed = 0 | Разделение водораздела. Обычно это лучший выбор, если вы предварительно вычисляете навигационную сетку, используйте его, если у вас большие открытые пространства. |
NavigationMesh.SourceGeometryMode
| Значение | Описание |
|---|---|
GroupsExplicit = 2 | Использует узлы в группе для геометрии. Группа указывается |
GroupsWithChildren = 1 | Сканирует узлы в группе и их дочерние узлы рекурсивно на предмет геометрии. Группа указывается |
Max = 3 | Представляет размер перечисления |
RootNodeChildren = 0 | Рекурсивно сканирует дочерние узлы корневого узла на предмет геометрии. |