Свойства NavMeshAgent.hasPath и NavMeshAgent.pathStatus не дают ясной картины. (Одинаковая работа в начале движения, независимо от местоположения конечной точки)
CalculatePath(Vector3 targetPosition, NavMeshPath path);
if (path.status == NavMeshPathStatus.PathComplete)
Durane
Путь считается не сразу, агент будет двигаться какое-то время, а у пути будет статус partial даже если агент и точка назначения находятся на одном куске навмеша.
Aleskeus
При установке destination устанавливается флаг pathPending, сигнализирующий о том, что путь строится. Затем, флаг сбрасывается и устанавливается hasPath.
Насколько помню, в случае, если путь строится посредством агента, то pathStatus будет либо Complete, либо Partial. При этом Error не ловил ни разу. Происходит так потому, что под капотом вызываются методы (названия не помню):
1) Проверить, лежит ли целевая точка над навмешем.
2) Если нет - вычислить ближайшую точку к целевой, лежащей на навмеше.
Т.о. через агента путь в точки 2 и 3 будет Partial. А вот если считать руками через статик методы - как сказал Durane, для точки 2 путь будет Error, а для 3 Partial.
Тема в архиве.