Суббота, 21 Декабря 2024, 20:12

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите реализовать AI который стреляет
LtdimaДата: Пятница, 13 Апреля 2012, 09:14 | Сообщение # 1
частый гость
Сейчас нет на сайте
Пожалуйста,помогите реализовать AI, который стреляет при виде игрока cry . Я делаю плаформер ,а когда начал делать этот тип врагов, возникла проблема, что если игрок будет видеть врагов,которые находятся платформой выше или ниже, то они все будут поворачиваться к игроку,а также стрелять. cry
AGDMFGДата: Пятница, 13 Апреля 2012, 10:58 | Сообщение # 2
участник
Сейчас нет на сайте
CREATE врага
Code
mirror=1 //чтобы не рисовать лишний спрайт "куда смотрит враг" - будем отражать исходный


STEP врага
Code
if distance_to_object(player) <= 100 //если между игроком и врагом расстояние меньше 100 пикселей
{
if self.x<player.x{mirror=-1;} else{mirror=1;} //поворачиваем бота в сторону игрока
instance_create(x,y,bullet); //производим выстрел (можно добавить задержки времени и доп.условия)
}


DRAW врага
Code
draw_sprite_ext(sprite_index,image_single,x,y,mirror,1,image_angle,c_white,1);


Проверку на видимость обьекта можно задать и с помощью: collision_line(x1, y1, x2, y2, obj, prec, notme)

Подробнее


Первая доделанная игра: Putin V.S. Humanity

Сообщение отредактировал AGDMFG - Пятница, 13 Апреля 2012, 11:53
LtdimaДата: Пятница, 13 Апреля 2012, 11:49 | Сообщение # 3
частый гость
Сейчас нет на сайте
Пожалуйста,можно поподробнее про проверку видимости?
ressДата: Пятница, 13 Апреля 2012, 12:11 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
collision_line(x1, y1, x2, y2, obj, prec, notme)

Ну вроде:
x1,y1 - координаты бота
x2,y2 - координаты врага бота
obj - объект, заграждающий врага

Пишется примерно так:
Code
if not collision_line(x,y,враг.x,враг.y,стена,0,0) then
...


Надеюсь я не ошибся. Что то давно этот оператор не использовался мной...


Я очень недоволен...
LtdimaДата: Пятница, 13 Апреля 2012, 20:12 | Сообщение # 5
частый гость
Сейчас нет на сайте
Вроде все работает,но когда я попытался использовать alarm (чтобы он стрелял с интервалом) у меня он вообще перестал стрелять.
Вот как я изменил код в step'е:
if distance_to_object(Obj_Hero) <= 600
{
if self.x<Obj_Hero.x{mirror=-1;} else{mirror=1;}
if not collision_line(x,y,Obj_Hero.x,Obj_Hero.y,Obj_block,0,0) then{
event_perform(alarm,1)

}

}

Добавлено (13.04.2012, 20:12)
---------------------------------------------
Пожалуйста,объясните как сделать так, чтобы ai стрелял с интервалом

ressДата: Суббота, 14 Апреля 2012, 16:13 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Ltdima, я точно не скажу как, ибо не знаю каков у тебя исходный код, но я обычно в событии Create устанавливаю Alarm и в этом самом аларме провожу все действия для выстрелов.

К примеру вот небольшой код:

Create:
Code
alarm[1]=10


Alarm 1:
Code
if (distance_to_object(игрок)<=100) and (not collision_line(x,y,игрок.x,игрокo.y,стена,0,0)) then begin
instance_create(x,y,bullet)
end;

alarm[1]=10


Я очень недоволен...
  • Страница 1 из 1
  • 1
Поиск:

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