Интеграция A* pathfinding в скрипт AI

Программирование на Юнити.

Интеграция A* pathfinding в скрипт AI

Сообщение Slava 16 дек 2009, 13:11

Это не решение, это вопрос.)
Я уже всю голову сломал. Для меня, сцена примера в плане интеграции в скрипт ИИ - вообще не о чем не говорит.
Вопрос в том, как вставить A* pathfinding в скрипт AI из ФПС тутора... Кто-нибудь пробовал? Такое ощущение, что в юнити какбэ номинально патфайдинг есть, но как им пользоваться, хз.
Добавить slava-1234 в Skype
Slava
UNIт
 
Сообщения: 135
Зарегистрирован: 05 апр 2009, 05:14

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Kann 16 дек 2009, 13:44

в самой юнити нечего номинально нет, надо или самому изобретать велосипед, или пользовать готовые примеры, на форуме в разделе ИИ есть ссылки которые давал Нео, там поиск пути, он вполне успешно прикручивается без особых заморочек, есть 2 вида, на Рейкасте и А* выбирайте что вам нужно и прикручивайте, но не тот не другой метод не даст вам полного избавления от проблем, так как просто находить правильный путь - половина беды, нужно научить правильно взаимодействовать с ИИ ботов, и есть проблемы с производительностью всего этого хозяйства.
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Интеграция A* pathfinding в скрипт AI

Сообщение gerasim 16 дек 2009, 15:01

Не дошол ещо. Пока кидаем ссыли на АИ - штоб в одном месте.
http://angryant.com/path/
Там видео и демопроект 36мб. Сурово, но может пригодитца. (c#)
У меня выскочили 3ошибки изза экспорта из Cheetah 3D. Но скрипты в наличии.
Неследите - и неследимы будете.
Аватара пользователя
gerasim
UNITрон
 
Сообщения: 166
Зарегистрирован: 17 апр 2009, 15:56
Откуда: Самара

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Slava 16 дек 2009, 15:06

Номинально - я подразумевал, ПП встроенного в юнити нет, но отдельно есть готовые решения ...
Канн, тема как раз про взаимодействие патфайдинга и ИИ.
Конкретнее, если было непонятно про что речь:
http://www.arongranberg.com/unity/a-pathfinding/ - я подразумеваю именно этот ПП.
http://unity3d.com/support/resources/tutorials/fpstutorial - отсюда - скрипт AI ботов, в который хотелось бы ввернуть ПП.

Чтобы начать просчет пути, в скрипт ИИ нужно вставить строчку - послать сикеру команду с координатами -

GetComponent ("Seeker").StartPath (fromHere, toHere);

Потом предполагается получить массив точек (собственно, сам путь):

SetPoints (points : Vector3[]) {
//Start follow the path
}
Проблема в том, как это заставить работать в конкретном скрипте... Мне кажется, это надо завязать на функцию MoveTowards(), чтобы любое перемещение бота просчитывалось...

Герасим - мне чтото показался этот ПП слишком сложным для интеграции... Нужно вэйпойнты расставлять по всему уровню. К тому-же я так понял он статический - а А* - динамически там сетка обновляется...
Еще естьhttp://www.arges-systems.com/articles/35/unitysteer-steering-components-for-unity - незнаю, толком не смотрел...
Добавить slava-1234 в Skype
Slava
UNIт
 
Сообщения: 135
Зарегистрирован: 05 апр 2009, 05:14

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Kann 16 дек 2009, 15:12

Правильным курсом идете товагищи ! :D
используйте
Код: Выделить всё
MoveTowards(waypointPosition)

у меня кстати все это уже работает, что райкастинг что это на А*, там далее проблемы по хлеще вылазят, которые я упомянул выше....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Интеграция A* pathfinding в скрипт AI

Сообщение gerasim 16 дек 2009, 15:28

Вот это открылось, без ошибок http://www.arongranberg.com/unity/a-pat ... /download/
Можно начать с Хаус - робот бегает за кликом мыши). 24мб
Неследите - и неследимы будете.
Аватара пользователя
gerasim
UNITрон
 
Сообщения: 166
Зарегистрирован: 17 апр 2009, 15:56
Откуда: Самара

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Slava 16 дек 2009, 15:32

Канн, у тебя работает????????? Это здорово!
Не поделишся знанием, как? MoveTowards(waypointPosition) - это где? в функции Patrol, или это сама функция?
Канн, поделись хотяб куском кода, чтоб понятнее было, этим ты двинешь прогресс намного вперед!

Герасим - я тоже остановился на этом скрипте почему-то)
Добавить slava-1234 в Skype
Slava
UNIт
 
Сообщения: 135
Зарегистрирован: 05 апр 2009, 05:14

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Kann 16 дек 2009, 15:39

Ну у вас и так же все есть ? как привел Герасим, в том примере все ясно и понятно, в чем у вас конкретно возникают проблемы ?
вообще что бы стало яснее чо куда вам нужно понять сам скрипт ИИ из ФПС туториал, когда вы в нем разберетесь то и пример из демки ПП будет ясен, там совсем не много отличий.
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Slava 16 дек 2009, 15:51

да скрипт ИИ из демки то я понял, хоть и не кодер. Так какие там небольшие отличия? Не ну правда, не получается у меня. Канн, если знаешь, и дело такое пустяковое, поделись знанием, а????
Добавить slava-1234 в Skype
Slava
UNIт
 
Сообщения: 135
Зарегистрирован: 05 апр 2009, 05:14

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Kann 16 дек 2009, 16:11

Ну если вы поняли ИИ, тогда на пальцах,
выдирайте из примера ПП вот такую функцию
Код: Выделить всё
function FindPoint (cpoint : int)
и
Код: Выделить всё
SetPoints (points : Vector3[])
вставляете себе в код с ИИ, далее уже в вашем коде ИИ там где бот должен кудато попасть используя ПП используете это
Код: Выделить всё
GetComponent ("Seeker").StartPath (fromHere, toHere);
MoveTowards(waypointPosition)

что тут непонятного я хз....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Kann 16 дек 2009, 16:14

Просто если я вам свой ИИ дам, то вы точно нечего не поймете так как там черт ногу уже сломит с логикой чо куда и за какими грибами идет :D
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Slava 16 дек 2009, 17:03

Канн, не все так просто. Как ты написал выше - не работает. Бот естественно бегает по вэйпойнтам, поскольку они есть, но не по просчитанному пути. Да и команда MoveTowards(waypointPosition) подразумевает, что бот будет двигаться только к вэйпойнту, а нужен просчет не только пути к вэйпойнтам (Patrol();), но и для других функций - типа MoveTowards (lastVisiblePlayerPosition); MoveTowards(position);

Вот оригинальный файл AI.js из ФПС тутора. Давайте на оригинальном файле встроим патфайдинг, поскольку у всех AI.js модифицирован))).
В демо сценке патфайдинга - Хаус - чтобы использовать скрипт AI из ФПС тутора - нужно расставить вэйпойнты - хотя-бы 3 штуки.
И поместить геймобъект с коллайдером (пустой или бокс) выше уровня земли, с тэгом player (или удалить из скрипта строчки с поиском player'a). Иначе робот будет просто стоять.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Slava 16 дек 2009, 17:13, всего редактировалось 1 раз.
Добавить slava-1234 в Skype
Slava
UNIт
 
Сообщения: 135
Зарегистрирован: 05 апр 2009, 05:14

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Kann 16 дек 2009, 17:11

еще один вариант, может быть он будет легче, в примере ПП демка House, возмите ИИ бота который бегает за мышкой, он простейший почти без всяких заморочек, на команду
Код: Выделить всё
command = "Walk";
можете не обращать пока что не какого внимания, вам остается в нем только добавить свою "хотелку" например добавить функцию
Код: Выделить всё
function AttackPlayer ()

и где то по условию что например
Код: Выделить всё
if (distance > shootRange)

добавить туда такое
Код: Выделить всё
GetComponent ("Seeker").StartPath (transform.position, Player.transform.position);
MoveTowards(waypointPosition)

все наш бот строит ПП и бегает за Player
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Kann 16 дек 2009, 17:17

Slava писал(а):Канн, не все так просто. Как ты написал выше - не работает. Бот естественно бегает по вэйпойнтам, поскольку они есть, но не по просчитанному пути. Да и команда MoveTowards(waypointPosition) подразумевает, что бот будет двигаться только к вэйпойнту, а нужен просчет не только пути к вэйпойнтам (Patrol();), но и для других функций - типа MoveTowards (lastVisiblePlayerPosition); MoveTowards(position);


Ну это уже и есть само ИИ, тут вам надо собирать картину происходящего самому, собственно побежит ли он к lastVisiblePlayerPosition или куда то еще вам самому определять, а бегает по вейпоинтам он не туда у вас скорей всего что вы пытаетесь это организовать в функции Patrol () ?
он там и не будет бегать, надо чуток по другому там делать.
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Интеграция A* pathfinding в скрипт AI

Сообщение Slava 16 дек 2009, 17:23

Канн, ну ведь сразу видно что не будет работать....
Можно на оригинальном файле AI всетаки это потестить сначала...
Могу выложить сценку Хаус, но уже с расставленными вэйпонтами, если надо...
Добавить slava-1234 в Skype
Slava
UNIт
 
Сообщения: 135
Зарегистрирован: 05 апр 2009, 05:14

След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3