Искусственный интеллект
|
|
ETUN4 | Дата: Среда, 19 Февраля 2014, 09:08 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Всем привет. Делаю искусственный интеллект для платформера, то есть бота. На данном этапе пишу реакцию бота на окружающие объекты, а конкретно лифта. Лифт это поток воздуха, который имеет силу и направление. Что бы бот дошел к определлённой точке создаю путь (path), и он ходит от текущей точки до следующей и так далее. Дак вот проблема в том, что не знаю как искажать путь что бы лифт, а не только блоки, мог искажать путь. К примеру есть две платформы, одна сверху, а вторая намного ниже и на ней есть вертикальный лифт вверх. Бот появляется на нижней платформе. Нужно добраться до верхней платформы. Если отложить путь, бот просто никогда не доберётся до цели. Немного о том, как генерируется путь. Создаю сетку на всю комнату(mp_grid_create), отмечаю ячейки, которые недопустимы, то есть там где находятся блоки. Генерирую путь после того кое-как его изменяю.Добавлено (19.02.2014, 09:08) --------------------------------------------- Работаю на GM 8
|
|
| |
Gargolev43 | Дата: Среда, 19 Февраля 2014, 10:29 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| при событии столкновения с лифтом останавливать робота и менять путь - не?
|
|
| |
ETUN4 | Дата: Среда, 19 Февраля 2014, 15:48 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Gargolev43, нет, ибо робот вообще может и не столкнуться с лифтом, он может быть и под землей, а подкидывать всё равно будет. А можно ли как-то вычислить к каким координатам попадёт бот, если попадёт под действие лифта?
|
|
| |
Gargolev43 | Дата: Пятница, 21 Февраля 2014, 12:46 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| у лифта же в любом случае будет "шахта", даже если она будет невидимая - ее я и имел в виду. Для GM явно лучше создать какой-нибуьд невидимый объект и проверять на столкновение с ним, чем на каждом шаге проверять где находится относительно лифта
|
|
| |
ETUN4 | Дата: Пятница, 21 Февраля 2014, 14:58 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Gargolev43, то есть "шахта"? Лифт это как бы поток воздуха, вот посмотри код: Код with(player) { if (distance_to_object(other) < other.strength*other.range) and (abs(point_direction(other.x,other.y,x,y) - (other.image_angle)) < 25) { motion_add(other.image_angle,other.strength/10); horizontal_speed += hspeed; hspeed = 0; } }
|
|
| |