Найти в Дзене
MaffyRL

Клон майнкрафта на GameMaker #1

Всем привет! Сегодня я буду делать клон майнкрафта на движке GameMaker. Если кто в танке, что такое GameMaker, или новичок в этом движке, рекомендую посмотреть сюда: https://pikabu.ru/story/gamemaker_studio_2_urok_1_znakomstvo_9166853?utm_source=linkshare&utm_medium=sharing Итак, начнем! 1. Базы Я уже создал проект, и импортировал ресурс для кнопки: Сверху ссылка на скачивание ресурса. А загружается ресурс так: Ну ладно, начнем с игрока: Создадим спрайт для игрока: Создадим событие Create для игрока: И пропишем код для инвентаря: В данном случае я буду использовать массив. Пока что поставим noone (т.е. нет), ведь в инвентаре игрока не должно ничего быть. Для управления игроком я возьму этот пример: Я убрал последнюю строчку, потому что иначе нашего игрока расквасит. Также я создал объект obj_block и заменил в коде obj_ground на obj_block. 2. Комнаты (румы) В моем случае я уже создал комнату для спавна игрока: И распределил слои в ней таким образом: Для "земли" на спавне я решил испо
Оглавление

Всем привет!

Сегодня я буду делать клон майнкрафта на движке GameMaker.

Если кто в танке, что такое GameMaker, или новичок в этом движке, рекомендую посмотреть сюда: https://pikabu.ru/story/gamemaker_studio_2_urok_1_znakomstvo_9166853?utm_source=linkshare&utm_medium=sharing

Итак, начнем!

1. Базы

Я уже создал проект, и импортировал ресурс для кнопки:

obj_button_parent.yy

Сверху ссылка на скачивание ресурса.

А загружается ресурс так:

-2

Ну ладно, начнем с игрока:

Создадим спрайт для игрока:

-3

Создадим событие Create для игрока:

-4

И пропишем код для инвентаря:

В данном случае я буду использовать массив.

-5

Пока что поставим noone (т.е. нет), ведь в инвентаре игрока не должно ничего быть.

Для управления игроком я возьму этот пример:

How To Make Platformer Movement In GameMaker
-6
-7

Я убрал последнюю строчку, потому что иначе нашего игрока расквасит.

Также я создал объект obj_block и заменил в коде obj_ground на obj_block.

2. Комнаты (румы)

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

-8

И распределил слои в ней таким образом:

-9

Для "земли" на спавне я решил использовать незерит, ведь игрок все равно его не добудет:

-10

Обратите внимание, что родитель у него obj_block, что бы игрок не пролетел сквозь него.

Я разместил в комнате блоки и игрока:

-11

Также забыл сказать, что у спрайта игрока маску столкновения надо поставить Точный, чтобы игрок не парил в воздухе на ~10 пкс (пикселей)

-12

Проверяем:

(Чтобы запустить игру, нажмите F5)

-13

3. GUI

А что такое GUI?

-14

Грубо говоря, ХП, сытость, инвентарь, и все такие экраны и т.п.

Для начала создадим в obj_player переменные global.hp и global.food и присвоим им значение 100:

-15

А почему надо писать именно global перед названиями переменных?

Определения переменных отсюда:

GameMaker Studio 2. Урок 4. - Иерархия объектов. «Объекты-родители» и их «дети». Глобальные переменные

2. Обычные переменные (не знаю, как правильно их обозвать:D)
Мы с ними уже активно работали, объявляются они просто:

название = значение

В дальнейшем, их можно вызывать из других объектов, используя with или обращаясь к объекту через переменную, хранящую его id. К примеру:

inst.coordx = 1;

3. Глобальные переменные. Данный вид переменных может быть вызван в любом событии любого объекта и изменён там. Объявляются следующим образом:

global.название = значение

Ну я думаю, что вы теперь поняли.

Создадим объект с названием obj_gui.

Создаем событие в нем Draw GUI и пишем там следующее:

draw_text(10, 10, string("HP: ") + string(global.hp));

draw_text(10, 20, string("FOOD: ") + string(global.food));

Идем в нашу комнату и добавляем слой с названием gui:

-16

Далее заходим в obj_player, в событие Create и пишем там:

instance_create_layer(0,0,"gui",obj_gui)

Запускаем, проверяем:

-17

Да, я, конечно использовал самую наитупейшую систему через объект, но работает же!

Короче, я устал писать, так что отрисовку инвентаря сделаем уже в следуещей статье!

Всем спасибо!