Суббота, 21 Декабря 2024, 16:53

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

Меню сайта
Категории каталога
Создание игр [358]
Статьи об общих понятиях связанных с созданием игр.
Программирование [84]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [149]
Статьи о программах для создания игр, уроки и описания.
Софт [44]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [169]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [133]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Какой жанр игр вам больше нравится играть?
Всего ответов: 2491
Главная » Статьи » Движки и Гейммейкеры

Создание простого инвентаря на Game Maker. Часть 1
Всем привет! Сегодня мы с вами разберём простейшую реализацию инвентаря. Что собой представляет инвентарь? Это ячейки, в каждой из которых содержится информация о подобранном вами предмете. Что происходит, когда игрок подбирает какой либо предмет? Проверяются все ячейки инвентаря, когда найдена свободная, то записываем в неё информацию о предмете, который подобрали. Не будем терять время и перейдём к делу. 
P.S: Кто не знаком с циклами и массивами, советую дальше не читать.
Для начала создадим все необходимые нам спрайты и объекты.

Спрайты
s_fruit - спрайт предмета, который мы будем подбирать. 
s_non - спрайт ячейки. Просто создайте пустой прозрачный спрайт размером в 32 х 32. 

Объекты 
inv - объект, в котором создаются ячейки инвентаря. 
o_case - ячейка. Создаются в объекте inv. 
o_fruit - предмет, который мы будем подбирать. 

Спрайты и объекты созданы, теперь можно переходить к написанию кода. Открываем объект inv, создаём событие Create и пишем код:

Code
width = 3;  
height = 3;   
for(i = 0; i < width; i += 1) {  
   for(j = 0; j < height; j += 1) {   
      cell[i, j] = instance_create(i * 32, j * 32, o_case); 
   }
}
Давайте разберём. Первая строка отвечает за кол-во ячеек по горизонтали, вторая - по вертикали. В итоге у нас должно получиться 9 ячеек. Третья и четвёртая строки инициализируют двойной цикл. Пятая строка создаёт объекты ячеек по горизонтали и вертикали и записывает индекс каждой ячейки в массив. Думаю, поняли. Всё, с этим объектом завершили. Переходим теперь к объекту o_fruit. Создаём события нажатой кнопки мыши (не глобальной) и пишем такой код:

Code
for(j = 0; j < inv.height; j += 1) {  
   for(i = 0; i < inv.width; i += 1) {  
      if (inv.cell[i, j].sprite_index == s_non) {  
         inv.cell[i, j].sprite_index = sprite_index;  
         instance_destroy();  
         exit;  
      }  
   }  
}

Здесь код отвечает за подбор предмета и помещения его в первую свободную ячейку инвентаря. Работает это так: если у объекта ячейки спрайт == s_non, значит она свободна, иначе - занята. Запускаем цикл, который проверяет все ячейки, и создаём условие, которое проверяет все ячейки на наличие предмета, если его нет, то найденной пустой ячейке присваиваем спрайт объекта, на который нажали, уничтожаем этот объект и выходим из цикла. С этим разобрались.

Далее идём в o_case и создаём два события.
-Нажатая кнопка мыши
-Draw


В событии нажатия кнопки мыши пишем ну очень сложный код: 
Code
if (sprite_index == s_fruit) {  //Тут проверяем спрайт объекта, который находится в данной ячейке   
   o_player.hp += 10; //Если условие истина, то прибавляем игроку 10 единиц здоровья и   
   sprite_index = s_non; //Опустошаем ячейку, на которую нажали 


И последнее, что мы с вами должны сделать, это отрисовать ячейку, т.к. она невидима из-за спрайта. Открываем ранее созданное событие Draw и пишем такие строки:
Code
draw_set_alpha(0.3); //Устанавливаем прозрачность на 0.3  
draw_rectangle(x, y, x + 32, y + 32, 0); //Рисуем вокруг спрайта заполненный квадрат  
draw_set_alpha(1); //Устанавливаем прозрачность на 1   
draw_rectangle(x, y, x + 32, y + 32, 1); //И поверх рисуем не заполненный квадрат  
draw_sprite_ext(sprite_index, image_index, x, y, 1, 1, image_angle, c_white, 1); //И, наконец, отрисовываем сам спрайт ячейки

Теперь ячейки будут отображаться нормально. С вами был Fade, спасибо за прочтение статьи и до новых встреч!
Категория: Движки и Гейммейкеры | Добавил: FadeBaker (05 Июля 2011)
Просмотров: 29064 | Комментарии: 8 | Рейтинг: 4.2/12 |
Теги: предметы, Game Maker, GM, уроки по GM, инвентарь, GML, ячейки, gamemaker, Создание инвентаря, Статья
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

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

Всего комментариев: 8
+0-
7 FriDan   (05 Апреля 2015 16:24) [Материал]
Когда персонаж переходит на следующий уровень то инвентарь обнуляется. Помогите плз!

+0-
6 nicol0012   (02 Февраля 2014 18:35) [Материал]
Выдает ошибку:

___________________________________________
ERROR in
action number 1
of Mouse Event for Left Button
for object money:

Error in code at line 1:
for(j = 0; j < inv.height; j += 1) {
^
at position 20: Unknown variable height

+0-
8 FriDan   (05 Апреля 2015 16:26) [Материал]
Ты должен изменить название объекта c inv на o_inv и в коде

(j = 0; j < inv.height; j += 1)
Нужно изменить на :
(j = 0; j < o_inv.height; j += 1)

+1-
5 vampir0305   (23 Января 2013 17:35) [Материал]
vampir0305у меня выдаёт ошибки

+1-
4 Bladolitel   (02 Января 2012 21:55) [Материал]
BladolitelСпасибо обязательно пригодится !

+4-
2 stalker5889   (09 Июля 2011 14:28) [Материал]
stalker5889Полезная статья! Хвалю. Хорошо бы написать о том как складывать предметы в "стопочку" и закрывать-открывать инвентарь. smile

+2-
3 FadeBaker   (12 Июля 2011 22:37) [Материал]
Написал второй урок по сосзданию инвентаря. smile http://gcup.ru/publ/sozdanie_prostogo_inventarja_na_game_maker_chast_2/2-1-0-310 Там как раз об этом и говорится. smile

+3-
1 GameMix   (09 Июля 2011 05:59) [Материал]
GameMixНорм урок. Для новичков, собравшихся сделать MMORPG, в самый раз smile

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Devana
  • Scrolling Game Development Kit
  • ZXTextGameCreation
  • Genesis3D
  • Evergine
  • Bladecoder Adventure Engine
  • Unity
  • PrBoom-plus
  • Panda3D
  • Tilengine
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг