VoxelAStarGrid3D
Алгоритм поиска путей на основе сетки A*, адаптированный к закупорке местности Воксель.
Алгоритм поиска путей на основе сетки A*, адаптированный к закупорке местности Воксель.
Это можно использовать для поиска путей между двумя позициями вокселя на закупоренной местности. Она настроена на 2 вокселя высотой и 1 воксель шириной, которые должны стоять на твердых вокселях и могут перепрыгнуть на 1 воксель высокой. Навмеша не требуется, он использует воксель непосредственно без выпечки, однако радиус поиска ограничен зоной (50 воксел и выше начинают быть относительно дорогими). В данный момент этот патологоанатом считает воксель с ID 0 воздухом, а остальное считается твердым. Примечание: Предполагается, что "позиции" этого класса будут находиться во вокселях. Если ваша местность залегает или если воксели меньше или больше мировых единиц, вам, возможно, придется изменить координаты.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
VoxelAStarGrid3DКонструктор
public VoxelAStarGrid3D();Методы7
DebugGetVisitedPositionsReckfell.Collections.Array<Vector3I>
public Reckfell.Collections.Array<Vector3I> DebugGetVisitedPositions();Получил список позиций вокселя, которые были посещены последней просьбой об установлении путей (относится к тому, как A* работает под капотом). Это для отладки.
Reckfell.Collections.Array<Vector3I>FindPathReckfell.Collections.Array<Vector3I>
public Reckfell.Collections.Array<Vector3I> FindPath(Vector3I fromPosition, Vector3I toPosition);Рассчитывает путь, начинающийся с положения вокселя до положения цели вокселя.
Эти позиции должны быть воздушными вокселями прямо над землей с достаточным пространством для агентов.
Возвращенный путь будет серией смежных воксельских позиций, через которые можно пройти, чтобы добраться до места назначения.
Если путь не найден или если либо старт, либо место назначения находятся за пределами зоны поиска, пустой массив будет возвращен.
Вы также можете использовать VoxelAStarGrid3D.SetRegion - указать зону поиска.
| Имя | Тип | По умолчанию |
|---|---|---|
fromPosition | Vector3I | — |
toPosition | Vector3I | — |
Reckfell.Collections.Array<Vector3I>FindPathAsyncvoid
public void FindPathAsync(Vector3I fromPosition, Vector3I toPosition);То же, что и VoxelAStarGrid3D.FindPath, но производят расчеты на отдельной нитью. VoxelAStarGrid3D.AsyncSearchCompleted Сигнал.
Только один асинхронный поиск может быть активным в определенное время. VoxelAStarGrid3D.IsRunningAsync чтобы проверить это.
| Имя | Тип | По умолчанию |
|---|---|---|
fromPosition | Vector3I | — |
toPosition | Vector3I | — |
GetRegionAabb
public Aabb GetRegion();Получит максимальный предел по региону, который будет рассматриваться на предмет определения путей в воксах.
AabbIsRunningAsyncbool
public bool IsRunningAsync();Возвращается, если путь в настоящее время рассчитан асинхронно. VoxelAStarGrid3D.FindPathAsync.
boolSetRegionvoid
public void SetRegion(Aabb box);Устанавливает максимальный предел области, который будет рассматриваться на предмет определения путей в воксах. Обычно нужно установить его перед вызовом VoxelAStarGrid3D.FindPath.
Чем больше регион, тем дороже может быть поиск. Имейте в виду, что объем вокселов в кубическом масштабе, так что не используйте его на больших участках (например, 50 воксел достаточно большой).
| Имя | Тип | По умолчанию |
|---|---|---|
box | Aabb | — |
SetTerrainvoid
public void SetTerrain(VoxelTerrain terrain);Устанавливает местность, которая будет использоваться для поиска.
| Имя | Тип | По умолчанию |
|---|---|---|
terrain | VoxelTerrain | — |
Сигналы и события1
AsyncSearchCompletedСобытие
public event VoxelAStarGrid3D.AsyncSearchCompletedEventHandler AsyncSearchCompleted;При проведении обысков с использованием VoxelAStarGrid3D.FindPathAsync Всё готово.
| Имя | Тип | По умолчанию |
|---|---|---|
path | Reckfell.Collections.Array<Vector3I> | — |