, пожалуйста, посмотрите это короткое видео, чтобы увидеть проблему. Как только появляется около 23 символов, они начинают двигаться в разных направлениях. Пожалуйста, помогите мне, я стараюсь изо всех сил и искал несколько дней и пробовал различные подходы к поиску путей, но никто не выработал.Unity A * Pathfinding Project: Repath заставляет персонажа двигаться в противоположном направлении
http://screencast.com/t/sUx9O0I9GQ
Моя установка IST сетки и символы имеют AIPath с компонентом конфигурации по умолчанию прилагается. Должно быть возможно, потому что я видел его в стресс-тест видео: https://www.youtube.com/watch?v=htoen7x3LuQ
Эта строка кода вызывает тревогу:
seeker.StartPath (transform.position,target.transform.position, OnPathComplete);
полный контекст
public void Start() {
InvokeRepeating ("searchPath", 1.0f, 1.0f);
searchPath();
}
public void searchPath() {
GameObject target = GameObject.Find ("Target");
seeker = GetComponent<Seeker>();
controller = GetComponent<CharacterController>();
//Start a new path to the targetPosition, return the result to the OnPathComplete function
seeker.StartPath (transform.position,target.transform.position, OnPathComplete);
}
public void OnPathComplete (Path p) {
Debug.Log ("Yay, we got a path back. Did it have an error? "+p.error);
if (!p.error) {
path = p;
//Reset the waypoint counter
currentWaypoint = 0;
}
}
public void Update() {
if (path == null) {
//We have no path to move after yet
return;
}
if (currentWaypoint >= path.vectorPath.Count) {
Debug.Log ("End Of Path Reached");
Destroy(gameObject);
return;
}
//Direction to the next waypoint
Vector3 dir = (path.vectorPath[currentWaypoint]-transform.position).normalized;
dir *= speed * Time.deltaTime;
controller.SimpleMove (dir);
//Check if we are close enough to the next waypoint
//If we are, proceed to follow the next waypoint
if (Vector3.Distance (transform.position,path.vectorPath[currentWaypoint]) < nextWaypointDistance) {
currentWaypoint++;
return;
}
}
Как говорит название, это Арон Гранбергс проект поиска пути http://arongranberg.com/astar/
Спасибо
Пожалуйста, поделитесь функцией, которую 'StartPath' вызывает как обратный вызов. – mwilczynski
Я добавил все методы из класса. В основном это пример кода из руководства по началу работы проекта звезды. Repath выполняется для обновления пути поддержки динамических препятствий. – zeiteisen
Последнее, что я пропустил здесь для устранения неполадок, - это то, как вы вычисляете 'nextWaypointDistance'. Невозможно увидеть его где угодно. – mwilczynski