Суббота, 21 Декабря 2024, 19:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Искусственный интеллект
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;
     }
}
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг