reckfellENGINE

NavigationPolygon

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

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

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

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

C#
var newNavigationMesh = new NavigationPolygon();
Vector2[] boundingOutline = [new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0)];
newNavigationMesh.AddOutline(boundingOutline);
NavigationServer2D.BakeFromSourceGeometryData(newNavigationMesh, new NavigationMeshSourceGeometryData2D());
GetEntity<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;

Добавление вершин и индексов полигонов вручную.

C#
var newNavigationMesh = new NavigationPolygon();
Vector2[] newVertices = [new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0)];
newNavigationMesh.Vertices = newVertices;
int[] newPolygonIndices = [0, 1, 2, 3];
newNavigationMesh.AddPolygon(newPolygonIndices);
GetEntity<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;

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

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

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

Свойства13

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

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

BakingRectСвойство
# BakingRect
C#
public Rect2 BakingRect { get; set; }

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

BakingRectOffsetСвойство
# BakingRectOffset
C#
public Vector2 BakingRectOffset { get; set; }

Смещение позиции, примененное к NavigationPolygon.BakingRect Rect2.

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

Размер ненавигируемой границы вокруг ограничивающей области запекания, определяемой NavigationPolygon.BakingRect Rect2. В сочетании с NavigationPolygon.BakingRect размер границы может использоваться для запекания навигационных сеток, выровненных по тайлам, без уменьшения краев тайлов на NavigationPolygon.AgentRadius.

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

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

OutlinesСвойство
# Outlines
C#
public Reckfell.Collections.Array<Vector2[]> Outlines { get; set; }
ParsedCollisionMaskСвойство
# ParsedCollisionMask
C#
public uint ParsedCollisionMask { get; set; }

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

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

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

PolygonsСвойство
# Polygons
C#
public Reckfell.Collections.Array<int[]> Polygons { get; set; }
SamplePartitionTypeСвойство
# SamplePartitionType
C#
public NavigationPolygon.SamplePartitionTypeEnum SamplePartitionType { get; set; }

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

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

Имя группы узлов, которые следует проанализировать для запекания исходной геометрии. Используется только когда NavigationPolygon.SourceGeometryMode — NavigationPolygon.SourceGeometryModeEnum.GroupsWithChildren или NavigationPolygon.SourceGeometryModeEnum.GroupsExplicit.

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

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

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

Методы43

AddOutline2 перегрузки
# AddOutline · 1/2
C#
public void AddOutline(Vector2[] outline);

Добавляет Vector2[], содержащий вершины контура, к внутреннему массиву, содержащему все контуры.

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

Добавляет Vector2[], содержащий вершины контура, к внутреннему массиву, содержащему все контуры.

Параметры
ИмяТипПо умолчанию
outlineReadOnlySpan<Vector2>—
AddOutlineAtIndex2 перегрузки
# AddOutlineAtIndex · 1/2
C#
public void AddOutlineAtIndex(Vector2[] outline, int index);

Добавляет Vector2[], содержащий вершины контура, во внутренний массив, содержащий все контуры в фиксированной позиции.

Параметры
ИмяТипПо умолчанию
outlineVector2[]—
indexint—
# AddOutlineAtIndex · 2/2
C#
public void AddOutlineAtIndex(ReadOnlySpan<Vector2> outline, int index);

Добавляет Vector2[], содержащий вершины контура, во внутренний массив, содержащий все контуры в фиксированной позиции.

Параметры
ИмяТипПо умолчанию
outlineReadOnlySpan<Vector2>—
indexint—
AddPolygon2 перегрузки
# AddPolygon · 1/2
C#
public void AddPolygon(int[] polygon);

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

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

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

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

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

ClearOutlinesvoid
# ClearOutlines
C#
public void ClearOutlines();

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

ClearPolygonsvoid
# ClearPolygons
C#
public void ClearPolygons();

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

GetAgentRadiusfloat
# GetAgentRadius
C#
public float GetAgentRadius();
Возвращает float
GetBakingRectRect2
# GetBakingRect
C#
public Rect2 GetBakingRect();
Возвращает Rect2
GetBakingRectOffsetVector2
# GetBakingRectOffset
C#
public Vector2 GetBakingRectOffset();
Возвращает Vector2
GetBorderSizefloat
# GetBorderSize
C#
public float GetBorderSize();
Возвращает float
GetCellSizefloat
# GetCellSize
C#
public float GetCellSize();
Возвращает float
GetNavigationMeshNavigationMesh
# GetNavigationMesh
C#
public NavigationMesh GetNavigationMesh();

Возвращает NavigationMesh, полученную из этого навигационного полигона. Эту навигационную сетку можно использовать для обновления навигационной сетки региона напрямую с помощью API NavigationServer3D.RegionSetNavigationMesh.

Возвращает NavigationMesh
GetOutlineVector2[]
# GetOutline
C#
public Vector2[] GetOutline(int idx);

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

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

Возвращает количество контуров, созданных в редакторе или скриптом.

Возвращает int
GetParsedCollisionMaskuint
# GetParsedCollisionMask
C#
public uint GetParsedCollisionMask();
Возвращает uint
GetParsedCollisionMaskValuebool
# GetParsedCollisionMaskValue
C#
public bool GetParsedCollisionMaskValue(int layerNumber);

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

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetParsedGeometryTypeNavigationPolygon.ParsedGeometryTypeEnum
# GetParsedGeometryType
C#
public NavigationPolygon.ParsedGeometryTypeEnum GetParsedGeometryType();
Возвращает NavigationPolygon.ParsedGeometryTypeEnum
GetPolygonint[]
# GetPolygon
C#
public int[] GetPolygon(int idx);

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

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

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

Возвращает int

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

GetSamplePartitionTypeNavigationPolygon.SamplePartitionTypeEnum
# GetSamplePartitionType
C#
public NavigationPolygon.SamplePartitionTypeEnum GetSamplePartitionType();
Возвращает NavigationPolygon.SamplePartitionTypeEnum
GetSourceGeometryGroupNameStringName
# GetSourceGeometryGroupName
C#
public StringName GetSourceGeometryGroupName();
Возвращает StringName
GetSourceGeometryModeNavigationPolygon.SourceGeometryModeEnum
# GetSourceGeometryMode
C#
public NavigationPolygon.SourceGeometryModeEnum GetSourceGeometryMode();
Возвращает NavigationPolygon.SourceGeometryModeEnum
GetVerticesVector2[]
# GetVertices
C#
public Vector2[] GetVertices();

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

Возвращает Vector2[]
MakePolygonsFromOutlinesvoid · Устарело
# MakePolygonsFromOutlines
C#
public void MakePolygonsFromOutlines();

Создает полигоны из контуров, добавленных в редакторе или с помощью скрипта.

RemoveOutlinevoid
# RemoveOutline
C#
public void RemoveOutline(int idx);

Удаляет контур, созданный в редакторе или скриптом. Для обновления полигонов необходимо вызвать NavigationPolygon.MakePolygonsFromOutlines.

Параметры
ИмяТипПо умолчанию
idxint—
SetAgentRadiusvoid
# SetAgentRadius
C#
public void SetAgentRadius(float agentRadius);
Параметры
ИмяТипПо умолчанию
agentRadiusfloat—
SetBakingRectvoid
# SetBakingRect
C#
public void SetBakingRect(Rect2 rect);
Параметры
ИмяТипПо умолчанию
rectRect2—
SetBakingRectOffsetvoid
# SetBakingRectOffset
C#
public void SetBakingRectOffset(Vector2 rectOffset);
Параметры
ИмяТипПо умолчанию
rectOffsetVector2—
SetBorderSizevoid
# SetBorderSize
C#
public void SetBorderSize(float borderSize);
Параметры
ИмяТипПо умолчанию
borderSizefloat—
SetCellSizevoid
# SetCellSize
C#
public void SetCellSize(float cellSize);
Параметры
ИмяТипПо умолчанию
cellSizefloat—
SetOutline2 перегрузки
# SetOutline · 1/2
C#
public void SetOutline(int idx, Vector2[] outline);

Изменяет контур, созданный в редакторе или скриптом. Для обновления полигонов необходимо вызвать NavigationPolygon.MakePolygonsFromOutlines.

Параметры
ИмяТипПо умолчанию
idxint—
outlineVector2[]—
# SetOutline · 2/2
C#
public void SetOutline(int idx, ReadOnlySpan<Vector2> outline);

Изменяет контур, созданный в редакторе или скриптом. Для обновления полигонов необходимо вызвать NavigationPolygon.MakePolygonsFromOutlines.

Параметры
ИмяТипПо умолчанию
idxint—
outlineReadOnlySpan<Vector2>—
SetParsedCollisionMaskvoid
# SetParsedCollisionMask
C#
public void SetParsedCollisionMask(uint mask);
Параметры
ИмяТипПо умолчанию
maskuint—
SetParsedCollisionMaskValuevoid
# SetParsedCollisionMaskValue
C#
public void SetParsedCollisionMaskValue(int layerNumber, bool value);

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

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetParsedGeometryTypevoid
# SetParsedGeometryType
C#
public void SetParsedGeometryType(NavigationPolygon.ParsedGeometryTypeEnum geometryType);
Параметры
ИмяТипПо умолчанию
geometryTypeNavigationPolygon.ParsedGeometryTypeEnum—
SetSamplePartitionTypevoid
# SetSamplePartitionType
C#
public void SetSamplePartitionType(NavigationPolygon.SamplePartitionTypeEnum samplePartitionType);
Параметры
ИмяТипПо умолчанию
samplePartitionTypeNavigationPolygon.SamplePartitionTypeEnum—
SetSourceGeometryGroupNamevoid
# SetSourceGeometryGroupName
C#
public void SetSourceGeometryGroupName(StringName groupName);
Параметры
ИмяТипПо умолчанию
groupNameStringName—
SetSourceGeometryModevoid
# SetSourceGeometryMode
C#
public void SetSourceGeometryMode(NavigationPolygon.SourceGeometryModeEnum geometryMode);
Параметры
ИмяТипПо умолчанию
geometryModeNavigationPolygon.SourceGeometryModeEnum—
SetVertices2 перегрузки
# SetVertices · 1/2
C#
public void SetVertices(Vector2[] vertices);

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

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

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

Параметры
ИмяТипПо умолчанию
verticesReadOnlySpan<Vector2>—

NavigationPolygon.ParsedGeometryTypeEnum

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

Оба NavigationPolygon.ParsedGeometryTypeEnum.MeshInstances и NavigationPolygon.ParsedGeometryTypeEnum.StaticColliders.

Max = 3

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

MeshInstances = 0

Анализирует экземпляры сетки как геометрию препятствия. Сюда входят узлы Polygon2D, MeshInstance2D, MultiMeshInstance2D и TileMap. Сетки анализируются только тогда, когда они используют формат поверхности 2D вершин.

StaticColliders = 1

Анализирует коллайдеры StaticBody2D и TileMap как геометрию препятствия. Коллайдер должен находиться в любом из слоев, указанных NavigationPolygon.ParsedCollisionMask.

NavigationPolygon.SamplePartitionTypeEnum

ЗначениеОписание
ConvexPartition = 0

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

Max = 2

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

Triangulate = 1

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

NavigationPolygon.SourceGeometryModeEnum

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

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

GroupsWithChildren = 1

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

Max = 3

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

RootNodeChildren = 0

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

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

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

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

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