Создание платформера с ящиками на Game Maker: Studio
Здравствуйте! В этой статье мы научимся делать ящики в платформере на Game Maker: Studio, которые можно передвигать и использовать для деактивации каких-нибудь ловушек либо для других целей. Для начала нарисуем спрайты игрока, стены и самого ящика. Названия можете дать произвольные, но например я давал такие как: s_block, s_hero и s_box:
Прежде чем делать сами ящики, состряпаем физику для игрока. Приступим? Давайте! Создадим объект o_hero и присвоим ему спрайт игрока. Делаем событие Create и туда запишем небольшой код:
В первой строчке мы задаем скорость движения, во второй скорость прыжка, в третьей гравитацию, в четвертой мы задаем направление гравитации, а в пятой, в последней, мы даем силу передвижения ящика.
Теперь создаем событие Step, и туда запишем код (сейчас я сделал комментарии кода, ибо просто непрактично будет его расписывать отдельно):
Код
if keyboard_check(vk_left) { box = instance_place(x - speed_max, y, o_box); if box // Если на пути героя стоит ящик { var xx; xx = x; move_contact_all(180, speed_max); // Пододвигаемся вплотную к ящику xx = (x - (xx - speed_max)) * push_speed; // Вычисляем расстояние, на которое ещё может подвинуться игрок и умножаем его на коэффициент скорости движения ящика with box move_contact_all(180, xx); // Двигаем ящик на полученное расстояние move_contact_all(180, speed_max); // Двигаем игрока к ящику
} else { if place_free(x - speed_max, y) // Если ничто не преграждает путь игроку x -= speed_max; // Двигаем игрока else move_contact_solid(180, speed_max); // Иначе - пододвигаемся вплотную к стенке } }
if keyboard_check(vk_right) // Налогично движению влево { box = instance_place(x + speed_max, y, o_box); if box { var xx; xx = x; move_contact_solid(0, speed_max); xx = (xx + speed_max - x) * push_speed; with box move_contact_solid(0, xx); move_contact_solid(0, speed_max); } else { if place_free(x + speed_max, y) x += speed_max; else move_contact_solid(0, speed_max); } }
if place_free(x, y + 1) // Если под игроком нет платформы { gravity = gravity_amount; // Устанавливаем гравитацию } else { gravity = 0; // Иначе убираем гравитацию
if keyboard_check(vk_up) { vspeed = -jump_speed; } }
Надеюсь вам все понятно, если что-то вы не поняли, то задайте вопрос в комментариях, я вам отвечу.
Теперь создаем объект o_block, присваиваем ему спрайт блока и ставим галочку на Solid (твердость):
Теперь в объекте игрока добавим событие столкновения с блоком, а потом прописываем туда такой код:
Код
x = xprevious; y = yprevious; move_contact_solid(direction, speed); vspeed = 0;
Объект игрока должен выглядеть так:
Он нужен для того, чтобы игрока при столкновении с блоком останавливался. Теперь самое интересное, это ящик! Создаем объект o_box. Делаем событие Create и вбиваем туда такой код:
Код
gravity_amount = 2;
Он задает ящику гравитацию. Теперь создаем событие Step и опять таки вписываем код:
Код
if place_free(x, y + 1) and !place_meeting(x, y + 1, o_hero) { gravity = gravity_amount; } else { gravity = 0; }
Теперь создаем событие столкновения с игроком, пишем туда код:
Код
if vspeed != 0 { x = xprevious; y = yprevious; move_contact_all(direction, speed); vspeed = 0; }
Это означает, что если ящик упадет на игрока, то он умрет. Ну и напоследок столкновение со стеной. Туда тоже записываем код:
Код
if vspeed != 0 { x = xprevious; y = yprevious; move_contact_solid(direction, speed); vspeed = 0; }
Это остановка. Теперь создаем комнату, расставляем объекты и радуемся!
Вот мы и создали платформер и сделали в нем ящики. Возможно напишу еще статьи о всяких ловушках и фичах для платформеров, а пока удачной вам разработки игр, новички. Старайтесь и учитесь, добивайтесь лучших результатов и у вас все получится!
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Создание платформера с ящиками на Game Maker: Studio», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.