reckfellENGINE

NavigationMesh

Навигационная сетка, определяющая проходимую территорию и препятствия.

На этой странице
class NavigationMeshReckfellSharpНаследует Resource

Навигационная сетка, определяющая проходимую территорию и препятствия.

Навигационная сетка представляет собой набор полигонов, которые определяют, по каким областям среды можно перемещатся, чтобы помочь агентам находить путь в сложных пространствах.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

NavigationMeshКонструктор
# NavigationMesh
C#
public NavigationMesh();

Свойства26

AgentHeightСвойство
# AgentHeight
C#
public float AgentHeight { get; set; }

Высота свободного пространства для запекания 3D. Не изменяет физическую форму персонажа и не перезапекает готовый меш при присваивании. В проверке одинаковый потолок 1,5 пропускает вариант высоты 1, но не 2; результат зависит также от разрешения построения.

AgentMaxClimbСвойство
# AgentMaxClimb
C#
public float AgentMaxClimb { get; set; }

Минимальная высота уступа, которая считается все еще проходимой. Примечание: При выпечке это значение будет округлено до ближайшего кратного NavigationMesh.CellHeight.

AgentMaxSlopeСвойство
# AgentMaxSlope
C#
public float AgentMaxSlope { get; set; }

Максимальный уклон, который считается пригодным для ходьбы, в градусах.

AgentRadiusСвойство
# AgentRadius
C#
public float AgentRadius { get; set; }

Радиус зазора для запекания проходимой области. Изменение параметра не перезапекает уже построенный ресурс автоматически; после запекания проверьте границы и путь. Это не радиус физической формы или механизма избегания.

BorderSizeСвойство
# BorderSize
C#
public float BorderSize { get; set; }

Размер ненавигируемой границы вокруг области запекания. В сочетании со значением NavigationMesh.FilterBakingAabb и значением NavigationMesh.EdgeMaxError, равным 1.0 или меньше размера границы, может использоваться для запекания навигационных сеток, выровненных по тайлам, без уменьшения краёв тайлов на NavigationMesh.AgentRadius. Примечание: Если это значение не равно 0.0, оно будет округлено до ближайшего значения, кратного NavigationMesh.CellSize во время запекания.

CellHeightСвойство
# CellHeight
C#
public float CellHeight { get; set; }

Ячейка высоты, используемая для растеризации вершин навигационной сетки по оси Y. Должна совпадать с высотой ячейки на навигационной карте.

CellSizeСвойство
# CellSize
C#
public float CellSize { get; set; }

Ячейка высоты, используемая для растеризации вершин навигационной сетки на плоскости XZ. Должна совпадать с размером ячейки на навигационной карте.

DetailSampleDistanceСвойство
# DetailSampleDistance
C#
public float DetailSampleDistance { get; set; }

Расстояние выборки, используемое при создании сетки детализации, в единицах ячеек.

DetailSampleMaxErrorСвойство
# DetailSampleMaxError
C#
public float DetailSampleMaxError { get; set; }

Максимальное расстояние, на которое должна отклоняться поверхность сетки детали от поля высоты, в единицах ячеек.

EdgeMaxErrorСвойство
# EdgeMaxError
C#
public float EdgeMaxError { get; set; }

Максимальное расстояние, на которое края упрощенного контура должны отклоняться от исходного необработанного контура.

EdgeMaxLengthСвойство
# EdgeMaxLength
C#
public float EdgeMaxLength { get; set; }

Максимально допустимая длина контурных кромок вдоль границы сетки. Значение 0.0 отключает эту функцию. Примечание: При запекании это значение будет округлено до ближайшего кратного NavigationMesh.CellSize.

FilterBakingAabbСвойство
# FilterBakingAabb
C#
public Aabb FilterBakingAabb { get; set; }

Если запекание Aabb имеет объем, запекание навигационной сетки будет ограничено его охватывающей областью.

FilterBakingAabbOffsetСвойство
# FilterBakingAabbOffset
C#
public Vector3 FilterBakingAabbOffset { get; set; }

Смещение позиции, примененное к NavigationMesh.FilterBakingAabb Aabb.

FilterLedgeSpansСвойство
# FilterLedgeSpans
C#
public bool FilterLedgeSpans { get; set; }

Если true, то пролеты, являющиеся уступами, помечаются как непроходимые.

FilterLowHangingObstaclesСвойство
# FilterLowHangingObstacles
C#
public bool FilterLowHangingObstacles { get; set; }

Если true, то непроходимые участки помечаются как проходимые, если их максимум находится в пределах NavigationMesh.AgentMaxClimb от проходимого соседа.

FilterWalkableLowHeightSpansСвойство
# FilterWalkableLowHeightSpans
C#
public bool FilterWalkableLowHeightSpans { get; set; }

Если true, то проходящие пролеты помечаются как непроходимые, если просвет над пролетом меньше, чем NavigationMesh.AgentHeight.

GeometryCollisionMaskСвойство
# GeometryCollisionMask
C#
public uint GeometryCollisionMask { get; set; }

Физические слои для сканирования на предмет статических коллайдеров. Используется только когда NavigationMesh.GeometryParsedGeometryType равен NavigationMesh.ParsedGeometryType.StaticColliders или NavigationMesh.ParsedGeometryType.Both.

GeometryParsedGeometryTypeСвойство
# GeometryParsedGeometryType
C#
public NavigationMesh.ParsedGeometryType GeometryParsedGeometryType { get; set; }

Определяет, какой тип узлов будет анализироваться как геометрия.

GeometrySourceGeometryModeСвойство
# GeometrySourceGeometryMode
C#
public NavigationMesh.SourceGeometryMode GeometrySourceGeometryMode { get; set; }

Источник геометрии, используемой при выпечке.

GeometrySourceGroupNameСвойство
# GeometrySourceGroupName
C#
public StringName GeometrySourceGroupName { get; set; }

Имя группы для сканирования геометрии. Используется только когда NavigationMesh.GeometrySourceGeometryMode равно NavigationMesh.SourceGeometryMode.GroupsWithChildren или NavigationMesh.SourceGeometryMode.GroupsExplicit.

PolygonsСвойство
# Polygons
C#
public Reckfell.Collections.Array Polygons { get; set; }
RegionMergeSizeСвойство
# RegionMergeSize
C#
public float RegionMergeSize { get; set; }

Любые регионы с размером меньше этого будут объединены с регионами большего размера, если это возможно. Примечание: Это значение будет возведено в квадрат для расчета количества ячеек. Например, значение 20 установит количество ячеек равным 400.

RegionMinSizeСвойство
# RegionMinSize
C#
public float RegionMinSize { get; set; }

Минимальный размер региона для его создания. Примечание: Это значение будет возведено в квадрат для расчета минимального количества ячеек, разрешенных для формирования изолированных островных областей. Например, значение 8 установит количество ячеек равным 64.

SamplePartitionTypeСвойство
# SamplePartitionType
C#
public NavigationMesh.SamplePartitionTypeEnum SamplePartitionType { get; set; }

Алгоритм разбиения для создания полигонов навигационной сетки.

VerticesСвойство
# Vertices
C#
public Vector3[] Vertices { get; set; }
VerticesPerPolygonСвойство
# VerticesPerPolygon
C#
public float VerticesPerPolygon { get; set; }

Максимально допустимое количество вершин для полигонов, создаваемых в процессе преобразования контура в полигон.

Методы60

AddPolygon2 перегрузки
# AddPolygon · 1/2
C#
public void AddPolygon(int[] polygon);

Добавляет полигон, используя индексы вершин, которые вы получаете при вызове NavigationMesh.GetVertices.

Параметры
ИмяТипПо умолчанию
polygonint[]—
# AddPolygon · 2/2
C#
public void AddPolygon(ReadOnlySpan<int> polygon);

Добавляет полигон, используя индексы вершин, которые вы получаете при вызове NavigationMesh.GetVertices.

Параметры
ИмяТипПо умолчанию
polygonReadOnlySpan<int>—
Clearvoid
# Clear
C#
public void Clear();

Очищает внутренние массивы вершин и индексов полигонов.

ClearPolygonsvoid
# ClearPolygons
C#
public void ClearPolygons();

Очищает массив полигонов, но не очищает массив вершин.

CreateFromMeshvoid
# CreateFromMesh
C#
public void CreateFromMesh(Mesh mesh);

Инициализирует навигационную сетку, устанавливая вершины и индексы в соответствии с Mesh. Примечание: Заданная mesh должна иметь тип Mesh.PrimitiveType.Triangles и иметь массив индексов.

Параметры
ИмяТипПо умолчанию
meshMesh—
GetAgentHeightfloat
# GetAgentHeight
C#
public float GetAgentHeight();

Читает настроенную высоту запекания, а не проверяет текущую физическую высоту персонажа.

Возвращает float

Настроенное значение AgentHeight. Оно само не доказывает, что ресурс уже запечён с этим параметром.

GetAgentMaxClimbfloat
# GetAgentMaxClimb
C#
public float GetAgentMaxClimb();
Возвращает float
GetAgentMaxSlopefloat
# GetAgentMaxSlope
C#
public float GetAgentMaxSlope();
Возвращает float
GetAgentRadiusfloat
# GetAgentRadius
C#
public float GetAgentRadius();
Возвращает float
GetBorderSizefloat
# GetBorderSize
C#
public float GetBorderSize();
Возвращает float
GetCellHeightfloat
# GetCellHeight
C#
public float GetCellHeight();
Возвращает float
GetCellSizefloat
# GetCellSize
C#
public float GetCellSize();
Возвращает float
GetCollisionMaskuint
# GetCollisionMask
C#
public uint GetCollisionMask();
Возвращает uint
GetCollisionMaskValuebool
# GetCollisionMaskValue
C#
public bool GetCollisionMaskValue(int layerNumber);

Возвращает, включен ли указанный слой NavigationMesh.GeometryCollisionMask, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetDetailSampleDistancefloat
# GetDetailSampleDistance
C#
public float GetDetailSampleDistance();
Возвращает float
GetDetailSampleMaxErrorfloat
# GetDetailSampleMaxError
C#
public float GetDetailSampleMaxError();
Возвращает float
GetEdgeMaxErrorfloat
# GetEdgeMaxError
C#
public float GetEdgeMaxError();
Возвращает float
GetEdgeMaxLengthfloat
# GetEdgeMaxLength
C#
public float GetEdgeMaxLength();
Возвращает float
GetFilterBakingAabbAabb
# GetFilterBakingAabb
C#
public Aabb GetFilterBakingAabb();
Возвращает Aabb
GetFilterBakingAabbOffsetVector3
# GetFilterBakingAabbOffset
C#
public Vector3 GetFilterBakingAabbOffset();
Возвращает Vector3
GetFilterLedgeSpansbool
# GetFilterLedgeSpans
C#
public bool GetFilterLedgeSpans();
Возвращает bool
GetFilterLowHangingObstaclesbool
# GetFilterLowHangingObstacles
C#
public bool GetFilterLowHangingObstacles();
Возвращает bool
GetFilterWalkableLowHeightSpansbool
# GetFilterWalkableLowHeightSpans
C#
public bool GetFilterWalkableLowHeightSpans();
Возвращает bool
GetParsedGeometryTypeNavigationMesh.ParsedGeometryType
# GetParsedGeometryType
C#
public NavigationMesh.ParsedGeometryType GetParsedGeometryType();
Возвращает NavigationMesh.ParsedGeometryType
GetPolygonint[]
# GetPolygon
C#
public int[] GetPolygon(int idx);

Возвращает int[], содержащий индексы вершин созданного полигона.

Параметры
ИмяТипПо умолчанию
idxint—
Возвращает int[]
GetPolygonCountint
# GetPolygonCount
C#
public int GetPolygonCount();

Возвращает число полигонов навигационного ресурса. Значение больше нуля подтверждает наличие данных, но не готовность карты, достижимость цели или физический зазор персонажа.

Возвращает int

Количество полигонов; 0 означает отсутствие готовых полигонов в этом ресурсе.

GetRegionMergeSizefloat
# GetRegionMergeSize
C#
public float GetRegionMergeSize();
Возвращает float
GetRegionMinSizefloat
# GetRegionMinSize
C#
public float GetRegionMinSize();
Возвращает float
GetSamplePartitionTypeNavigationMesh.SamplePartitionTypeEnum
# GetSamplePartitionType
C#
public NavigationMesh.SamplePartitionTypeEnum GetSamplePartitionType();
Возвращает NavigationMesh.SamplePartitionTypeEnum
GetSourceGeometryModeNavigationMesh.SourceGeometryMode
# GetSourceGeometryMode
C#
public NavigationMesh.SourceGeometryMode GetSourceGeometryMode();
Возвращает NavigationMesh.SourceGeometryMode
GetSourceGroupNameStringName
# GetSourceGroupName
C#
public StringName GetSourceGroupName();
Возвращает StringName
GetVerticesVector3[]
# GetVertices
C#
public Vector3[] GetVertices();

Возвращает Vector3[], содержащий все вершины, используемые для создания полигонов.

Возвращает Vector3[]
GetVerticesPerPolygonfloat
# GetVerticesPerPolygon
C#
public float GetVerticesPerPolygon();
Возвращает float
SetAgentHeightvoid
# SetAgentHeight
C#
public void SetAgentHeight(float agentHeight);

Высота свободного пространства для запекания 3D. Не изменяет физическую форму персонажа и не перезапекает готовый меш при присваивании. В проверке одинаковый потолок 1,5 пропускает вариант высоты 1, но не 2; результат зависит также от разрешения построения.

Параметры
ИмяТипПо умолчанию
agentHeightfloat—
agentHeight

Неотрицательная высота в единицах исходной геометрии. После изменения выполните новое запекание.

SetAgentMaxClimbvoid
# SetAgentMaxClimb
C#
public void SetAgentMaxClimb(float agentMaxClimb);
Параметры
ИмяТипПо умолчанию
agentMaxClimbfloat—
SetAgentMaxSlopevoid
# SetAgentMaxSlope
C#
public void SetAgentMaxSlope(float agentMaxSlope);
Параметры
ИмяТипПо умолчанию
agentMaxSlopefloat—
SetAgentRadiusvoid
# SetAgentRadius
C#
public void SetAgentRadius(float agentRadius);
Параметры
ИмяТипПо умолчанию
agentRadiusfloat—
SetBorderSizevoid
# SetBorderSize
C#
public void SetBorderSize(float borderSize);
Параметры
ИмяТипПо умолчанию
borderSizefloat—
SetCellHeightvoid
# SetCellHeight
C#
public void SetCellHeight(float cellHeight);
Параметры
ИмяТипПо умолчанию
cellHeightfloat—
SetCellSizevoid
# SetCellSize
C#
public void SetCellSize(float cellSize);
Параметры
ИмяТипПо умолчанию
cellSizefloat—
SetCollisionMaskvoid
# SetCollisionMask
C#
public void SetCollisionMask(uint mask);
Параметры
ИмяТипПо умолчанию
maskuint—
SetCollisionMaskValuevoid
# SetCollisionMaskValue
C#
public void SetCollisionMaskValue(int layerNumber, bool value);

На основе value включает или отключает указанный слой в NavigationMesh.GeometryCollisionMask при заданном layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetDetailSampleDistancevoid
# SetDetailSampleDistance
C#
public void SetDetailSampleDistance(float detailSampleDist);
Параметры
ИмяТипПо умолчанию
detailSampleDistfloat—
SetDetailSampleMaxErrorvoid
# SetDetailSampleMaxError
C#
public void SetDetailSampleMaxError(float detailSampleMaxError);
Параметры
ИмяТипПо умолчанию
detailSampleMaxErrorfloat—
SetEdgeMaxErrorvoid
# SetEdgeMaxError
C#
public void SetEdgeMaxError(float edgeMaxError);
Параметры
ИмяТипПо умолчанию
edgeMaxErrorfloat—
SetEdgeMaxLengthvoid
# SetEdgeMaxLength
C#
public void SetEdgeMaxLength(float edgeMaxLength);
Параметры
ИмяТипПо умолчанию
edgeMaxLengthfloat—
SetFilterBakingAabbvoid
# SetFilterBakingAabb
C#
public void SetFilterBakingAabb(Aabb bakingAabb);
Параметры
ИмяТипПо умолчанию
bakingAabbAabb—
SetFilterBakingAabbOffsetvoid
# SetFilterBakingAabbOffset
C#
public void SetFilterBakingAabbOffset(Vector3 bakingAabbOffset);
Параметры
ИмяТипПо умолчанию
bakingAabbOffsetVector3—
SetFilterLedgeSpansvoid
# SetFilterLedgeSpans
C#
public void SetFilterLedgeSpans(bool filterLedgeSpans);
Параметры
ИмяТипПо умолчанию
filterLedgeSpansbool—
SetFilterLowHangingObstaclesvoid
# SetFilterLowHangingObstacles
C#
public void SetFilterLowHangingObstacles(bool filterLowHangingObstacles);
Параметры
ИмяТипПо умолчанию
filterLowHangingObstaclesbool—
SetFilterWalkableLowHeightSpansvoid
# SetFilterWalkableLowHeightSpans
C#
public void SetFilterWalkableLowHeightSpans(bool filterWalkableLowHeightSpans);
Параметры
ИмяТипПо умолчанию
filterWalkableLowHeightSpansbool—
SetParsedGeometryTypevoid
# SetParsedGeometryType
C#
public void SetParsedGeometryType(NavigationMesh.ParsedGeometryType geometryType);
Параметры
ИмяТипПо умолчанию
geometryTypeNavigationMesh.ParsedGeometryType—
SetRegionMergeSizevoid
# SetRegionMergeSize
C#
public void SetRegionMergeSize(float regionMergeSize);
Параметры
ИмяТипПо умолчанию
regionMergeSizefloat—
SetRegionMinSizevoid
# SetRegionMinSize
C#
public void SetRegionMinSize(float regionMinSize);
Параметры
ИмяТипПо умолчанию
regionMinSizefloat—
SetSamplePartitionTypevoid
# SetSamplePartitionType
C#
public void SetSamplePartitionType(NavigationMesh.SamplePartitionTypeEnum samplePartitionType);
Параметры
ИмяТипПо умолчанию
samplePartitionTypeNavigationMesh.SamplePartitionTypeEnum—
SetSourceGeometryModevoid
# SetSourceGeometryMode
C#
public void SetSourceGeometryMode(NavigationMesh.SourceGeometryMode mask);
Параметры
ИмяТипПо умолчанию
maskNavigationMesh.SourceGeometryMode—
SetSourceGroupNamevoid
# SetSourceGroupName
C#
public void SetSourceGroupName(StringName mask);
Параметры
ИмяТипПо умолчанию
maskStringName—
SetVertices2 перегрузки
# SetVertices · 1/2
C#
public void SetVertices(Vector3[] vertices);

Задает вершины, которые затем можно индексировать для создания полигонов с помощью метода NavigationMesh.AddPolygon.

Параметры
ИмяТипПо умолчанию
verticesVector3[]—
# SetVertices · 2/2
C#
public void SetVertices(ReadOnlySpan<Vector3> vertices);

Задает вершины, которые затем можно индексировать для создания полигонов с помощью метода NavigationMesh.AddPolygon.

Параметры
ИмяТипПо умолчанию
verticesReadOnlySpan<Vector3>—
SetVerticesPerPolygonvoid
# SetVerticesPerPolygon
C#
public void SetVerticesPerPolygon(float verticesPerPolygon);
Параметры
ИмяТипПо умолчанию
verticesPerPolygonfloat—

NavigationMesh.ParsedGeometryType

ЗначениеОписание
Both = 2

Оба NavigationMesh.ParsedGeometryType.MeshInstances и NavigationMesh.ParsedGeometryType.StaticColliders.

Max = 3

Представляет размер перечисления NavigationMesh.ParsedGeometryType.

MeshInstances = 0

Анализирует экземпляры сетки как геометрию. Сюда входят узлы MeshInstance3D, CsgShape3D и GridMap.

StaticColliders = 1

Анализирует коллайдеры StaticBody3D как геометрию. Коллайдер должен находиться в любом из слоев, указанных NavigationMesh.GeometryCollisionMask.

NavigationMesh.SamplePartitionTypeEnum

ЗначениеОписание
Layers = 2

Разделение слоев. Хороший выбор для использования в мозаичной навигационной сетке с тайлами среднего и малого размера.

Max = 3

Представляет размер перечисления NavigationMesh.SamplePartitionTypeEnum.

Monotone = 1

Монотонное разбиение. Используйте это, если вам нужна быстрая генерация навигационной сетки.

Watershed = 0

Разделение водораздела. Обычно это лучший выбор, если вы предварительно вычисляете навигационную сетку, используйте его, если у вас большие открытые пространства.

NavigationMesh.SourceGeometryMode

ЗначениеОписание
GroupsExplicit = 2

Использует узлы в группе для геометрии. Группа указывается NavigationMesh.GeometrySourceGroupName.

GroupsWithChildren = 1

Сканирует узлы в группе и их дочерние узлы рекурсивно на предмет геометрии. Группа указывается NavigationMesh.GeometrySourceGroupName.

Max = 3

Представляет размер перечисления NavigationMesh.SourceGeometryMode.

RootNodeChildren = 0

Рекурсивно сканирует дочерние узлы корневого узла на предмет геометрии.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.