Помогите реализовать AI который стреляет
| |
Ltdima | Дата: Пятница, 13 Апреля 2012, 09:14 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Пожалуйста,помогите реализовать AI, который стреляет при виде игрока . Я делаю плаформер ,а когда начал делать этот тип врагов, возникла проблема, что если игрок будет видеть врагов,которые находятся платформой выше или ниже, то они все будут поворачиваться к игроку,а также стрелять.
|
|
| |
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:
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
Я очень недоволен...
|
|
| |
|