Решил использовать built-in поиск пути (он мне понравился больше, чем мои реализации), и все классно работает за исключением одного момента...
В двух словах о сцене: есть модель помещения, для которой запечен NavMesh, есть стартовый и целевой ГО. От стартовой до целевой точки катится сфера (агент).
ПРОБЛЕМА
Если я ставлю агента на стартовую позицию и командую ему
Синтаксис:
Используется javascript
agent.SetDestination(target_point.transform.position);
то сфера прекрасно начинает катиться по маршруту.
Но как только я хочу просто получить маршрут (чтобы разобрать его на контрольные точки и реализовать движение по нему особым образом своим скриптом) - путь не находится (т.е. NavMeshPath.status = InvaidPath)
Вот код:
Синтаксис:
Используется javascript
//ставим агента (сферу) на стартовую точку
sphere.transform.position = start_point.transform.TransformPoint(Vector3.zero);
//собственно ссылка на агента
agent = sphere.GetComponent("NavMeshAgent");
//если здесь написать
//agent.SetDestination(target_point.transform.position);
//а все, что ниже, стереть - то сфера успешно пойдет по маршруту
//формируем машрут
var navPath : NavMeshPath = new NavMeshPath();
var pathFound : boolean = agent.CalculatePath(target_point.transform.position, navPath);
var pathCorners : Vector3[];
if (pathFound)
{
print("PATH FOUND");
pathCorners = navPath.corners;
print(pathCorners.length);
} else {
print("NO WAY "+navPath.status);
}
sphere.transform.position = start_point.transform.TransformPoint(Vector3.zero);
//собственно ссылка на агента
agent = sphere.GetComponent("NavMeshAgent");
//если здесь написать
//agent.SetDestination(target_point.transform.position);
//а все, что ниже, стереть - то сфера успешно пойдет по маршруту
//формируем машрут
var navPath : NavMeshPath = new NavMeshPath();
var pathFound : boolean = agent.CalculatePath(target_point.transform.position, navPath);
var pathCorners : Vector3[];
if (pathFound)
{
print("PATH FOUND");
pathCorners = navPath.corners;
print(pathCorners.length);
} else {
print("NO WAY "+navPath.status);
}
В консоли имеем: NO WAY PathInvalid
В чем здесь может быть загвоздка?