В этом уроке мы будем продолжать разрабатывать нашу TDS игру в стиле достаточно известной игры Counter-Strike 2D. Если в прошлой части мы разрабатывали «основы основ», то теперь мы перейдем к более важным вещам, например к разработке достаточно сильных противников, а иначе говоря – ботов.
Health бар
Итак, для начала нам нужно подготовить второстепенные в этом уроке объекты и полностью оптимизировать их. Конкретно это касается пуль производимых уже ботами и небольшой изюминки – Health бара для игрока. Начнем, пожалуй, с health бара. Создайте объектhealth_bar и введите в событие Step скрипт:
Теперь в событие Draw скиньте блок действия Draw Health Bar(
x1 = x
y1 = y
x2 = x+50
y2 = y-5
Объект health_bar разместите в любой точке комнаты. Теперь за игроком будет мягко плыть показатель жизней.
Пули от enemy
Пули, выпускаемые ботом, будут иметь похожие свойства с пулями игрока. Поэтому щелкаем правой кнопкой мыши по объекту obj_bullet и нажимаем Дублировать(duplicate). Новый объект назовите так: obj_enemy_bullet. При желании вы можете немного доработать эти боеприпасы, например, установив функцию уничтожения при соприкосновении с игроком или стеной.
Доработка игрока
Когда появляются враги, появляется и возможность проиграть им. Чтобы это было не так легко давайте сделаем систему жизней для игрока (Завершение Health Бара). Для этого мы откроем объект player и для него добавим событие Столкновение с obj_enemy_bullet. В этом событии мы уменьшим жизни игрока следующим скриптом:
В событие Create введем скрипт на 100 hp:
Чтобы игрок не был бессмертным, как какой-нибудь Кощей, нужно добавить действия для проигрыша. Для этого в событие Step, в самый конец перенесите действие TestExpression(
health<=0
Следующим после данного действия к данному событию перенесите Restart Game(
Благодаря таким манипуляциям игрок сможет умереть, а точней он просто перезагрузит игру, если его пристрелят. У вас может возникнуть вопрос: «А почему нельзя просто удалить игрока, когда он умрет?». Да, конечно игрока можно удалить, ведь пока-что ботов нет. Но далее мы создадим противников и искусственный интеллект соответственно. Вся проблема в том, что планируемый «интеллект» будет использовать координаты игрока, а если игрок удалиться, то произойдет ошибка, ведь координаты исчезнут тоже.
Переходим к ботам
Ну и, в конце концов, мы дошли до того, к чему стремились изначально в этой статье, а именно к созданию ботов.
Итак, создайте объект enemy и в событие Step перенесите действие Set Variable(
Variable=image_angle и value=direction.
Перенесите еще одно такое же действие, но уже с другими параметрами:
Variable=shot_e и value= irandom(100)
Теперь перенесем еще и Test Expression(
(distance_to_object(player)<500) and (distance_to_object(player)>100)
А ниже Test Expression воткнем действие Step Avoiding(
x= player.x;
y= player.y;
speed=3
Все это ограничим снизу блоком ELSE, который очень напоминает Test Expression, только на нем написано ELSE
Ниже вставим знакомый Set Variable со значениями:
Variable=direction и value=point_direction(x,y,player.x,player.y)
Ну а еще ниже скинем последнее условное действие Test Expression(если кто не запомнил то вот оно:
(shot_e<5) and (distance_to_object(player)<350)
Ну и последний блок на сегодня! Переносим действие Create Moving со значениями:
Object=obj_enemy_bullet
X=x
Y=y
Speed=6
Direction=direction
Можете похлопать себе! Вы только что сделали собственного бота, который может преследовать игрока и стрелять в него. Правда, в дальнейшем не помешает установить жизни для них. Хотя я думаю, вы извлекли все что, вам требовалось и уже самостоятельно бегло сделаете необходимое. Удачи!
|
пятница, 9 ноября 2012 г.
Разработка TDS шутера (Часть 2)
Подписаться на:
Комментарии к сообщению (Atom)
Можно регулировать скорострельность врагов?
ОтветитьУдалить