Среда, 25 Апреля 2018, 11:57

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

Меню сайта
Категории каталога
Создание игр [307]
Статьи об общих понятиях связанных с созданием игр.
Программирование [69]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [123]
Статьи о программах для создания игр, уроки и описания.
Софт [27]
Различные программы, в том числе в помощь игроделам.
2D-графика [11]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [10]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [4]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [70]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [60]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Разработка игр для вас:
Всего ответов: 10769
Главная » Статьи » Создание игр

Создание платформенной стрелялки на GMS
Здравствуйте! В этой статье я вас научу делать платформерные стрелялки. В них вы управляете игроком как в платформере, но при этом можете убивать врагов из оружия и т.д. Также мы сделаем врагов, которые смогут атаковать игрока.

Для начала мы сделаем необходимые спрайты. Для игрока нам понадобится два спрайта - spr_player_r и spr_player_l, один спрайт игрок вправо, другой влево, также нам понадобиться спрайт оружия для игрока, назовем spr_weapon_p, а также пуля, назовем spr_bullet_p. Для врага нам нужен спрайт spr_enemy, это сам враг. А также нам нужно оружие врага - spr_weapon_e, плюс нужна пуля врага, spr_bullet_e. По мимо этого нам нужен спрайт spr_ground, это будет земля. Со спрайтами разобрались. Перейдем к объектам.



Создаем объект obj_ground, ставим ему твердость.

Теперь создаем объекты для игрока. Создаем объект obj_bullet_p, ставим спрайт пули игрока и не трогаем его. Теперь создаем объект obj_player, и ставим ему спрайт spr_player_r. Теперь создаем событие Create и прописываем несложный код:

Код
image_speed=0
right=true
gravity=1 //Гравитация у игрока
health=100 //Кол-во здоровья у игрока


Благодаря этому коду мы создали основные характеристики игроку. Теперь создаем событие Alarm 0, прописываем коротенький код:

Код
fire=true


Мы создали переменную, которая отвечает за возможность стрелять (некое разрешение, ограничение стрельбы на время). На очереди событие Step, оно будет отвечать за движение:

Код
if keyboard_check(vk_right) then //Движение в право
hspeed=4 //Скорость (можно менять)

if keyboard_check(vk_left) then //Движение влево
hspeed=-4 //Скорость (можно менять)

if (not place_free(x,y+3)) and (keyboard_check(vk_up)) then //Прыжок
vspeed=-13

if keyboard_check(vk_nokey) then //Это что бы игрок мог стоять на месте
begin
hspeed=0
image_index=0
image_speed=0
end;


Мы прописали действия, при нажатии кнопок. Теперь прикрепим оружие к игроку, создаем событие Draw:

Код
rotate=point_direction(x,y,mouse_x,mouse_y);

if right=true then
gun_x=x
else
gun_x=x

gun_y=y

draw_sprite(sprite_index,image_index,x,y)
draw_sprite_ext(spr_weapon_p,0,gun_x,gun_y,image_xscale,image_yscale,rotate,image_blend,image_a)


Теперь создаем событие столкновения с obj_ground, вставляете функцию speed vertical, значение speed to = 0. Теперь создаем событие Left, вставляем код:

Код
sprite_index=spr_player_l
image_speed=0.2 //Скорость анимации
right=false


Это нужно чтобы спрайт игрока менялся при движении влево. Аналогично сделаем с событием Right:

Код
sprite_index=spr_player_r
image_speed=0.2 //Скорость анимации
right=true


Теперь создаем событие Global Left Pressed и вставляем событие Create Moving, а значение сделайте следующие:

objects - obj_bullet_p
x - gun_x
y - gun_y
speed - 20-25
direction - rotate

Все, морока с игроком окончена, у вас должно получится примерно так:



Создаем объект obj_bullet_e, ставим спрайт пули врага и не трогаем этот объект. Создаем объект obj_enemy. Создаем событие Create, вписываем код:

Код
sp=25;  
prec=true;  
gun_wait=10;  
gun=true;  
dir=0;
hp = 100//Здоровье врага


Создаем событие Alarm 0 и вписываем код:

Код
gun=true;


Это аналогично переменной fire в объекте игрока. Теперь создаем событие Step, вписываем код:

Код
//Напрвление

if instance_exists(obj_player) then dir=point_direction(x,y,obj_player.x,obj_player.y);

//Гравитация
if place_free(x,y+1) then gravity=0.8 else gravity=0;

if instance_exists(obj_player) then begin  
   
//Движение  
  if distance_to_object(obj_player)>50 then //Дистанция с которой враг видит игрока
  if o_player.x>x {mspeed=4; image_xscale=1} else {mspeed=-4; image_xscale=-1}
  else
  mspeed=0
   
   
   
if (place_free(x+mspeed,y)) then x+=mspeed else begin
  if not place_free(x,y+3) vspeed=-15
end;

//Стрельба
if (distance_to_object(obj_player)<450) and (gun=true) then begin
  bullet=instance_create(x,y,obj_bullet_e);
   
  with bullet do begin
  direction=other.dir;
  speed=other.sp;
  end;
   
  alarm[0]=gun_wait;
  gun=false;
   
end;

end;


Это все основные действия нашего врага, которые он будет выполнять сам. Все подробности в комментариях к коду. Теперь событие Draw:

Код
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,noone,1)
draw_sprite_ext(spr_weapon_e,0,x,y,1,1,dir,noone,1)


Теперь создаем событие столкновения с obj_ground, вставляете функцию speed vertical, значение speed to = 0.

Все, враг тоже окончен, у вас должно получиться примерно так:

Создаем комнату, расставляем объекты, и радуемся.
Категория: Создание игр | Добавил: MasterSambo (31 Мая 2015)
Просмотров: 3188 | Рейтинг: 3.3/14 |
Теги: урок, стрелялка, платформер, Создание игры, Обучение, 2D-игру, GM, GML, враги, GMS
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Создание платформенной стрелялки на GMS», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Greenfoot
  • IKEMEN
  • Doomsday
  • Platinum Arts Sandbox
  • Byond
  • OpenBOR
  • Minko
  • MegaKerma
  • ADRIFT
  • Aether3D
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2018 Рейтинг