NavigationRegion3D
Проходимая трехмерная область, которую NavigationAgent3D может использовать для поиска пути.
Проходимая трехмерная область, которую NavigationAgent3D может использовать для поиска пути.
Проходимая 3D-область на основе NavigationMesh, которую NavigationAgent3Ds может использовать для поиска пути.
Две области могут быть соединены друг с другом, если они имеют схожее ребро. Вы можете установить минимальное расстояние между двумя вершинами, необходимое для соединения двух ребер, с помощью NavigationServer3D.MapSetEdgeConnectionMargin.
Примечание: Перекрытие навигационных сеток двух областей недостаточно для соединения двух областей. Они должны иметь схожее ребро.
Стоимость входа в эту область из другой области можно контролировать с помощью значения NavigationRegion3D.EnterCost.
Примечание: Это значение не добавляется к стоимости пути, если начальная позиция уже находится внутри этой области.
Стоимость перемещения на расстояние внутри этой области можно контролировать с помощью множителя NavigationRegion3D.TravelCost.
Примечание: Этот узел кэширует изменения своих свойств, поэтому если вы вносите изменения в базовую область Rid в NavigationServer3D, они не будут отражены в свойствах этого узла.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
NavigationRegion3DКонструктор
public NavigationRegion3D();Свойства6
EnabledСвойство
public bool Enabled { get; set; }Определяет, включен или отключен NavigationRegion3D.
EnterCostСвойство
public float EnterCost { get; set; }Когда поиск путей входит в судоходную сетку этого региона из судовождения другого региона, ценность этого участка увеличивается к расстоянию пути, используемому для определения самого короткого пути.
NavigationLayersСвойство
public uint NavigationLayers { get; set; }Битовое поле, определяющее все навигационные слои, к которым принадлежит регион. Эти навигационные слои можно проверить при запросе пути с помощью NavigationServer3D.MapGetPath.
NavigationMeshСвойство
public NavigationMesh NavigationMesh { get; set; }Ресурс NavigationMesh для использования.
TravelCostСвойство
public float TravelCost { get; set; }При поиске пути внутри навигационной сетки этого региона пройденные расстояния умножаются на NavigationRegion3D.TravelCost для определения кратчайшего пути.
UseEdgeConnectionsСвойство
public bool UseEdgeConnections { get; set; }Если этот параметр включен, навигационная область будет использовать краевые соединения для соединения с другими навигационными областями, находящимися в непосредственной близости от границы краевых соединений навигационной карты.
Методы21
BakeNavigationMeshvoid
public void BakeNavigationMesh(bool onThread = true);Выпекает NavigationMesh. Если on_thread установлен на true (по умолчанию), выпекание выполняется в отдельном потоке. Выпекание в отдельном потоке полезно, поскольку выпекание навигации — недешевая операция. После завершения оно автоматически устанавливает новый NavigationMesh. Обратите внимание, что выпекание в отдельном потоке может быть очень медленным, если геометрия анализируется из сеток, поскольку асинхронный доступ к каждой сетке подразумевает тяжелую синхронизацию. Также обратите внимание, что выпекание в отдельном потоке автоматически отключается в операционных системах, которые не могут использовать потоки (например, Web с отключенными потоками).
| Имя | Тип | По умолчанию |
|---|---|---|
onThread | bool | true |
GetBoundsAabb
public Aabb GetBounds();Возвращает выровненный по осям ограничивающий прямоугольник для преобразованной навигационной сетки региона.
AabbGetEnterCostfloat
public float GetEnterCost();floatGetNavigationLayerValuebool
public bool GetNavigationLayerValue(int layerNumber);Возвращает, включен ли указанный слой битовой маски NavigationRegion3D.NavigationLayers, учитывая layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
boolGetNavigationLayersuint
public uint GetNavigationLayers();uintGetNavigationMapRid
public Rid GetNavigationMap();Возвращает текущую навигационную карту Rid, используемую в этом регионе.
RidGetNavigationMeshNavigationMesh
public NavigationMesh GetNavigationMesh();NavigationMeshGetRegionRidRid · Устарело
public Rid GetRegionRid();Возвращает Rid этого региона на NavigationServer3D.
RidGetRidRid
public Rid GetRid();Возвращает Rid этого региона на NavigationServer3D. В сочетании с NavigationServer3D.MapGetClosestPointOwner может использоваться для определения NavigationRegion3D, ближайшего к точке на объединенной навигационной карте.
RidGetTravelCostfloat
public float GetTravelCost();floatGetUseEdgeConnectionsbool
public bool GetUseEdgeConnections();boolIsBakingbool
public bool IsBaking();Возвращает true, когда NavigationMesh запекается в фоновом потоке.
boolIsEnabledbool
public bool IsEnabled();boolSetEnabledvoid
public void SetEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetEnterCostvoid
public void SetEnterCost(float enterCost);| Имя | Тип | По умолчанию |
|---|---|---|
enterCost | float | — |
SetNavigationLayerValuevoid
public void SetNavigationLayerValue(int layerNumber, bool value);На основе value включает или отключает указанный слой в битовой маске NavigationRegion3D.NavigationLayers, учитывая layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
SetNavigationLayersvoid
public void SetNavigationLayers(uint navigationLayers);| Имя | Тип | По умолчанию |
|---|---|---|
navigationLayers | uint | — |
SetNavigationMapvoid
public void SetNavigationMap(Rid navigationMap);Устанавливает Rid навигационной карты, которую должен использовать этот регион. По умолчанию регион автоматически присоединится к навигационной карте по умолчанию World3D, поэтому эта функция требуется только для переопределения карты по умолчанию.
| Имя | Тип | По умолчанию |
|---|---|---|
navigationMap | Rid | — |
SetNavigationMeshvoid
public void SetNavigationMesh(NavigationMesh navigationMesh);| Имя | Тип | По умолчанию |
|---|---|---|
navigationMesh | NavigationMesh | — |
SetTravelCostvoid
public void SetTravelCost(float travelCost);| Имя | Тип | По умолчанию |
|---|---|---|
travelCost | float | — |
SetUseEdgeConnectionsvoid
public void SetUseEdgeConnections(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
Сигналы и события2
BakeFinishedСобытие
public event Action BakeFinished;Уведомляет о завершении операции запекания навигационной сетки.
NavigationMeshChangedСобытие
public event Action NavigationMeshChanged;Уведомляет об изменении NavigationMesh.