Среда, 17.04.2024, 01:59
Главная Регистрация RSS
Приветствую Вас, Гость
Поиск по сайту
Авторизация

Меню сайта
Game Maker
Если вы только-только начали изучать игрострой и еще даже не успели скачать сам Game Maker, предлагаем вам на выбор следующие версии программы:

Game Maker 8.1
Классика. Идеально подходит для создания простых 2D игр на PC. Требует активации.
Game Maker for Mac
Абсолютно та же программа, но только для пользователей Mac. Требует активации.
Game Maker Studio
Самая новая версия с возможностью кроссплатформенной разработки. Бесплатна.
Топ 5 игр
Агент Green 4.2 / 5.0
FeDo 4.2 / 5.0
To Mars: Sec... 4.2 / 5.0
To Mars+MapE... 3.9 / 5.0
Paintball 3.8 / 5.0

Топ игр составлен путем пользовательского голосования.

Если вы не согласны с какой-либо оценкой, примите участие и поставьте свой балл игре. Ваша оценка очень важна для нас ;)
Статистика



На сайте: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Гейм-дизайн и графика

Разработка TDS шутера (Часть 2)

В этом уроке мы будем продолжать разрабатывать нашу TDS игру в стиле достаточно известной игры Counter-Strike 2D. Если в прошлой части мы разрабатывали «основы основ», то теперь мы перейдем к более важным вещам, например к разработке достаточно сильных противников, а иначе говоря – ботов. 

 

Health бар

Итак, для начала нам нужно подготовить второстепенные в этом уроке объекты и полностью оптимизировать их. Конкретно это касается пуль производимых уже ботами и небольшой изюминки – Health бара для игрока. Начнем, пожалуй, с health бара. Создайте объект health_bar и введите в событие Step скрипт:

 

x:=player.x-20

y:=player.y-20



Теперь в событие Draw скиньте блок действия Draw Health Bar() из вкладки score. В появившемся окне установите следующие обязательные значения:

 

x1 = x

y1 = y

x2 = x+50

y2 = y-5

 

Объект health_bar разместите в любой точке комнаты. Теперь за игроком будет мягко плыть показатель жизней.

 

Пули от enemy

Пули, выпускаемые ботом, будут иметь похожие свойства с пулями игрока. Поэтому щелкаем правой кнопкой мыши по объекту obj_bullet и нажимаем Дублировать(duplicate). Новый объект назовите так: obj_enemy_bullet. При желании вы можете немного доработать эти боеприпасы, например, установив функцию уничтожения при соприкосновении с игроком или стеной.


 

Доработка игрока

Когда появляются враги, появляется и возможность проиграть им. Чтобы это было не так легко давайте сделаем систему жизней для игрока (Завершение Health Бара). Для этого мы откроем объект player и для него добавим событие Столкновение с obj_enemy_bullet. В этом событии мы уменьшим жизни игрока следующим скриптом:


health-=1
 

В событие Create введем скрипт на 100 hp:

 


health=100
   

Чтобы игрок не был бессмертным, как какой-нибудь Кощей, нужно добавить действия для проигрыша. Для этого в событие Step, в самый конец перенесите действие Test Expression() с следующим условием:

 

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


 

Можете похлопать себе! Вы только что сделали собственного бота, который может преследовать игрока и стрелять в него. Правда, в дальнейшем не помешает установить жизни для них. Хотя я думаю, вы извлекли все что, вам требовалось и уже самостоятельно бегло сделаете необходимое. Удачи!

 

Категория: Гейм-дизайн и графика | Добавил: qwerto (24.03.2012)
Просмотров: 5664 | Комментарии: 19 | Рейтинг: 4.9/9
Всего комментариев: 191 2 »
18 mitmironov2002   (16.12.2014 15:12) [Материал]
mitmironov2002 у меня пишет:

ERROR in
action number 6
of  Step Event
for object Vrag:

Error in code at line 1:
   direction = point_direction(x,y,Igrok.x,Igrok.y)
                                        ^
at position 39: Unknown variable x

0
19 BRESS   (17.12.2014 08:28) [Материал]
BRESS Названия спрайтов не перекликаются с названиями объектов?

17 BRESS   (06.02.2014 14:50) [Материал]
BRESS Как по мне, надо учить людей самостоятельно реализовывать все задуманное, а то совсем обленились: напиши им то, напиши им се =)

15 костет   (23.03.2013 09:16) [Материал]
где исходник?

14 GoodFace   (24.01.2013 21:07) [Материал]
GoodFace КАК СОЗДАТЬ ПЕРЕМЕННУЮ?!?! cry

16 BRESS   (25.04.2013 21:08) [Материал]
BRESS переменная = <значение>

13 serner   (22.12.2012 22:21) [Материал]
у меня игра стоит на месте

12 олег   (11.12.2012 17:42) [Материал]
ult где можно скаать cry

11 BRESS   (02.08.2012 17:16) [Материал]
BRESS Народ! health - это жизни игрока и только! Для остального создаем переменную hp!

9 Martin   (18.06.2012 09:57) [Материал]
Martin теперь снова не так sad
стреляю во врага, и у него жизнь отнимается и у меня sad
скажите как исправить?

10 миха   (22.06.2012 20:33) [Материал]
миха у мя тож самое как исправить помогите плизз cry

8 Martin   (18.06.2012 09:51) [Материал]
Martin О_О Разобрался))

7 Martin   (18.06.2012 09:50) [Материал]
Martin у меня пишет

___________________________________________
FATAL ERROR in
action number 1
of Collision Event with object obj_bullet
for object enemy:

COMPILATION ERROR in code action
Error in code at line 1:
enemy.health-:=1
^
at position 13: Assignment operator expected.

когда пытаюсь сделать здоровье cry sad

1-10 11-14
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]