Войти
ПрограммированиеФорумИгровая логика и ИИ

[unity], [navmesh] как узнать что путь существует?

#0
13:51, 10 мая 2018
Изображение

Как узнать, что путь из точки 1 к точке 2 не существует? (ибо точка 2 не на навмеше)
Как узнать, что путь из  точки 1 к точке 3 не существует? ( ибо два куска навмеша не соеденины)

Свойства NavMeshAgent.hasPath и NavMeshAgent.pathStatus не дают ясной картины. (Одинаковая работа в начале движения, независимо от местоположения конечной точки)


#1
15:50, 10 мая 2018

CalculatePath(Vector3 targetPosition, NavMeshPath path);

if (path.status == NavMeshPathStatus.PathComplete)

#2
17:53, 10 мая 2018

Durane
Путь считается не сразу, агент будет двигаться какое-то время, а у пути будет статус partial даже если агент и точка назначения находятся на одном куске навмеша.

#3
19:07, 10 мая 2018

Aleskeus
При установке destination устанавливается флаг pathPending, сигнализирующий о том, что путь строится. Затем, флаг сбрасывается и устанавливается hasPath.

Насколько помню, в случае, если путь строится посредством агента, то pathStatus будет либо Complete, либо Partial. При этом Error не ловил ни разу. Происходит так потому, что под капотом вызываются методы (названия не помню):
1) Проверить, лежит ли целевая точка над навмешем.
2) Если нет - вычислить ближайшую точку к целевой, лежащей на навмеше.

Т.о. через агента путь в точки 2 и 3 будет Partial. А вот если считать руками через статик методы - как сказал Durane, для точки 2 путь будет Error, а для 3 Partial.

ПрограммированиеФорумИгровая логика и ИИ

Тема в архиве.