Доброго времени суток! Перед тем как приступить непосредственно к созданию 2D шутера мне хотелось бы немного размыть эту статью вводной частью. Итак, сейчас Вы читаете мою первую статью на этом сайте. Честно сказать я не профи в разработке игр и работаю пока преимущественно с Game Maker, дабы набить руку перед серьезными проектами. Так вот, в этой статье, а вернее сказать в этом уроке я попробую снабдить Вас некоторыми своими знаниями в области геймдева. Конкретно, я расскажу о том, как сделать наипростейший 2D шутер в стиле Контры.
Ладно. Приступим к созданию игры. Для начала нам нужно запастись спрайтами:
player_go_right и player_go_left – спрайты движения игрока влево и вправо (анимация).
gun_right – спрайт ружья, направленного вправо. Для этого спрайта установите центр вращения на рукояти, как показано на скриншоте. bullet_spr – спрайт пули. Никаких особых критериев. wall_sprite – спрайт стены. Желательно размера 32x32.
Когда спрайты готовы, самое время создать необходимые объекты и естественно настроить их. Начнем с самого простого – стены. Создайте объект wall_obj и присвойте ему спрайт wall_sprite. Также для этого объекта установите свойство Твердость(Solid).
Далее переходим к пулям. Создайте объет bullet_obj и присвойте ему bullet_spr. Чтобы в будущем пуля вела себя более естественно в событии Столкновнение с wall_obj добавьте действие Destroy Instance ( ). По желанию можете увеличить глубину пули.
Все второстепенные объекты готовы. Приступаем к самому сложному. Создайте объект игрока player_obj и присвойте ему спрайт player_go_right или player_go_left. Для player_obj в событии Create введите скрипт():
Code
image_speed=0 right=true gravity=1
Этот скрипт запускает гравитацию для игрока и уменьшает скорость спрайта до 0. Так же этим кодом мы вводим новую переменную right, с помощью который мы в дальнейшем будем определять направление игрока.
Перейдем к управлению. В событии Step напишите следующий код():
Code
//Движение вправо if keyboard_check(vk_right) then hspeed=5
//Движение влево if keyboard_check(vk_left) then hspeed=-5
//Под ногами не пусто? Нажата ли кнопка вверх? if (not place_free(x,y+3)) and (keyboard_check(vk_up)) then vspeed=-15 //Прыжок //Если ничего не нажато if keyboard_check(vk_nokey) then begin hspeed=0 image_index=0 image_speed=0 end;
Этот скрипт позволит игроку ходить влево, вправо и даже прыгать.
Итак, гравитация есть, управление есть, а опоры нет. Чтобы опора появилась добавьте событие Столкновение с wall_obj и введите в это событие:
Code
vspeed=0
Ну вот, практически все готово. Игрок уже может смело прыгать по платформе. Но к сожалению анимации движения не будет. Для того чтобы это исправить в событие press <Left> введите скрипт:
Осталось только научить игрока стрелять. Для начала в этих целях мы дадим ему оружие. В этих целях введите в событие Draw следующий скрипт:
Code
//Определение направления оружия rotate=point_direction(x,y,mouse_x,mouse_y);
//Игрок повернут направо? if right=true then gun_x=x+15 //Смена положения ружья по X else gun_x=x+1
gun_y=y+15//Смена положения ружья по Y
draw_sprite(sprite_index,image_index,x,y) //Прорисовка игрока draw_sprite_ext(gun_right,0,gun_x,gun_y,image_xscale,image_yscale,rotate,image_blend,image_alpha) //Прорисовка ружья
Хочу обратить Ваше внимание на то, что gun_x и gun_y возможно придется подгонять вручную, если при запуске игры оружие будет висеть не в руках у игрока.
Если же все работает замечательно, давайте продолжать. Добавьте событие Glob Left Pressed и в него перенесите действие Create Moving ( ) с следующими значениями:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Как сделать 2D шутер в Game Maker», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
я всё сделал как написано, но возникли баги, персонаж застревает, и проваливается иногда в пол, как в СанАндреасе машины, и поставил звук пулемёта, но если долго нажимать - трелять, вылезает ошибка, + автомат хз как витает, вокруг игрока. Я побирал координаты, но он удалялся, как-то, точнее его центр вращения, увеличивался.
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]