| Искусственный интеллект | 
|  | 
| 
| 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;
 }
 }
 
 |  |  |  |  |