Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Делаем мини-игру тир на событиях

Делаем мини-игру тир на событиях 4 года 2 мес. назад #119054

  • 2Oth_Century_boi
  • 2Oth_Century_boi аватар
  • Вне сайта
  • Бывалый
  • А вот и нет, добро – вещь обратно пропорциональная злу.
  • Сообщений: 98
  • Спасибо получено: 117
  • Учитель
Здравствуйте, дорогие форумчане! :)
Вот вам ещё один туториал, который не факт что кому-то вообще понадобиться. Тут я решил использовать меньше картинок, но больше текста, в отличии от предыдущих двух(один из которых на момент написания удалён :mad: ).

Покажу как сделать мини-игру тир. В ней будем двигать прицел стрелочками по экрану, на кнопку действия мы будем стрелять, а стрелять будем по целям. Цель мини-игры — попасть во все цели, извините за тавтологию. Делать все будем только на событиях.


И так, первым делом рисуем сам прицел. Он должен быть по центру, отклонение даже в один пиксель нежелательно.



Теперь рисуем саму цель. И так, отвечаем прямоугольную область, верхний левый угол которой находиться в центре картинки.
Я выделил достаточно криво, но границы всё равно видно:


И рисуем саму цель. У меня это злой бандюкан с кривыми руками)


Потом убираем границы, двигаем верхний левый угол цели ближе к центру и запоминаем высоту и ширину цели! У меня это 45 и 43.


И ещё нужен фон. Да простит меня АннТенна, в роли фона выступает её ава, но без неё :cheer:
Вот сам фон:


Теперь отправляемся в мейкер. Запускаем его и загружаем наши картинки.
И так, заходим в общие события. Создаём событие которые двигает и отображает прицел. Ставим ему тип "параллельный процесс" и делаем чтобы оно запускалось от переключателя, который я назвал "тир".
В самом событии ставим цикл, в цикл пишем команду которая отображает картинку. Картинку с прицелом. У этой картинки должен быть высокий номер(самый высокий из всех картинок для этой мини-игры), у меня это 10. Также путь координаты картинки задаются переменными. Переменную координаты X прицела я назвал "C-X", переменную координаты Y соответственно назвал "C-Y". Мы будем изменять значения этих переменных и таким образом двигать прицел.
Дальше идут fork conditions(мейкерский оператор if), которые анализируют переменную "Движение" на соответствие одному из значений. Если значение совпадает, то изменяется переменная координат прицела. То есть, мы будем двигать прицел изменяя значение переменной "Движение", где её значение от 1 до 4 означает движение в одну из сторон, а любое другое означает, что прицел неподвижен. Чтобы всё работало нужно сделать как на картинке: если переменная = 1, то увеличиваем Y, если переменная = 2, то уменьшаем X, если переменная = 3, то увеличиваем Х, а если переменная = 4, то уменьшаем Y.
А в самом низу ставим "нулевую" задержку. На самом деле она не равна нулю, но она очень маленькая, наверное где-то в 0.1 децисекунду.
А ставиться такая здержка очень просто [ Нажмите, чтобы развернуть ]



Создаём ещё одно общее событие. Назовём его "Стрельба", как понятно из названия, оно даёт нам возможность стрелять. Не забываем указать, что это параллельный процесс и запуск от переключателя "тир". Состав этого ивента очень прост: ставим цикл, в цикл прописываем задержку до нажатия клавиши, затем пишем эффекты выстрела по желанию(у меня это звук + светлый экран), дальше включаем переменную "выстрел", "нулевую" задержку, и снова выключаем переменную, и под конец задержку в 1 секунду, чтобы нельзя было зажимать как с пулемёта. Вот и всё, теперь идём едалть событие карты, которое бы включало это всё.


Теперь на карте создаём событие. По традиции, графика события это Анн. :laugh:
И так, для начала создаём механизм который бы нам позволял изменять значение переменной(а она бы меняла направление движения). Записывать цифры в переменную от нажатия соответствующей клавиши может команда Enter Password.
Про настройку Enter Password [ Нажмите, чтобы развернуть ]


В событии первым делам отображаем фон, у него должен быть самый низкий номер, у меня это 1. Далее включаем переключатель "Тир", чтобы запустить общие события мини-игры. Дальше пишем цикл, в него прописываем этот самый Enter Password, дальше "нулевая" задержка, потом даём той переменной значение 0, а потом опять "нулевая" задержка. Если вы сделали всё верно, то если вы запустите игру и включите это событие, то у вас должен отобразиться прицел, фон и возможность двигать прицелом, используя стрелочки на клавиатуре.


Теперь приводим событие в порядок. Сверху добавляем установку значения прицела, это чтобы он появлялся в конкретном месте, а не в левом верхнем углу или последнем месте, где он был. Также обнуляем переменную "Попаданий". Она будет хранить значение подстреленных целей, и по понятным причинам её нужно обнулить в начале. В цикл добавляется один fork condition, я его выделил, т.к. он играет важную роль. Он срабатывает, когда мы попали под достаточному количеству целей и выходит из цикла. После цикла включается переключатель, отобржаетсья сообщениео победе и стираютсья изображения фона и прицела.


Теперь нужно сделать эти сами цели. Возможно кто-то скажет что я сделал по-дебильному, но у меня за каждую цель будет отвечать своё событие на карте. И так, создаём на карте событие, путь оно срабатывает от переключателя мини-игры и будет параллельным процессом. Писать тут нам придётся много, но ничего сложного нет. И так, у меня у цели есть четыре переменных: E1-X, E1-Y, E1-XX и E1-YY. Первые две, это координаты левой верхней точки, а последние два это координата X крайней правой точки и координата Y крайней нижней точкой. Чтобы узнать последние 2, нужно сложить первые две координаты с высотой и шириной цели. То есть E1-XX = E1-X + ширина. А E1-YY = E1-Y + высота. Первые 4 строки заполняют эти самые переменные. Далее отображается картинка цели(её номер должен быть больше номера фона, но меньше номера прицела), координатами картинки будут переменные E1-X и E1-Y. Далее задержка на "0 секунд" и куча Fork Conditions. Чтобы было проще, нужно всю эту кучу представить в виде одного форк кондитионса. Эта штука проверят: Включён ли переключатель "Выстрел", C-X(координата Х прицела) больше чем E1-X, C-X меньше чем E1-XX, C-Y(координата Y прицела) больше чем E1-Y, C-Y меньше чем E1-YY. Если все эти условия верны, то значит в момент выстрела прицел был наведён на цель и тогда срабатывает команда выхода из цикла и изображение цели отлетает за экран. За пределами цикла мы увеличиваем переменную с попаданиями на 1 и... Ещё один цикл! В котором всего лишь задержка и проверка переключателя мини-игры на то, что он выключен. дело в том, что если завершить это событие при включённом переключателе, то это событие снова запуститься.



И вот и готова мини-игра. Но что делать если нужно более одной цели? Тогда копируем событие цели и редактируем его копию: создаём новые переменные и заменяем старые на них(я не заморачиваюсь и просто меняю цифру после "E": E2-X, E2-Y, E2-XX, E2-YY), также даём изображению с целью другой номер. Если всё сделано правильно, то должен получиться такой вот тир:
Гифка [ Нажмите, чтобы развернуть ]


Вот вроде бы и всё, спасибо всем кто читал!
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: NettySvit, asdasdasd, Alx_Yago, Reynor
Время создания страницы: 0.203 секунд