Решил укомплектовать сюда все новые статейки, некоторым может быть удобнее читать на форуме.
Приветствую вас! Сейчас я вам расскажу как делать простые системные программы на Game Maker, например Paint и Калькулятор. Поначалу это может показаться трудно, но на практике это очень даже легко. Проверим? Тогда начнем творить!
Paint. Сначала сделаем Paint, это легче, чем калькулятор. Сначала сделаем спрайты. Сделайте спрайт круга любого цвета, 32х32 (кроме белого), это наша краска, а потом белый круг, тоже 32х32, это станет нашим ластиком, с его помощью краска будет "стираться" (именно в ковычках). И напоследок сделайте спрайт кисти, она будет делать краску, и удалять ее. Сначала создайте объекты краски и ластика. В них ничего не пихаем. А вот далее создайте объект кисти, в котором добавьте событие Create, в нем поставьте функцию Execut Code. Теперь пропишите следующий код:
Код
x=mouse_x-20 y=mouse_y-20
Он нужен чтобы кисточка следовала за мышью. Будет еще лучше, если вообще не давать кисти спрайта, так мы будем рисовать просто курсором мыши. Теперь сделайте событие Left Button, а в него событие Create Instance, выберите в нем объект краски, и обязательно постоавьте галочку на "Относительно", координаты оставьте 0,0. Аналогично сделайте событие Right Button, только выберите объект ластика.
Теперь делаем комнату, любого размера. Фон обязательно белый, иначе ластик не будет работать! В комнате поставьте объект кисти. Вот и готово
Калькулятор. Теперь очереди ждет калькулятор. Для него спрайты нам не пригодяться. Скажу сразу, что калькулятор будет без кнопок, он будет работать так, что нужно будет вводить лишь числа. Теперь создаем объект, назвать можете произвольно. В нем добавляем событие Create, а туда пихаем Execut Code. Туда пропишем такой код:
if act=1 then s=show_message_ext('Выберите действие:','Умножение','','Деление') if s=1 {integer1 = get_integer("Введите первый множитель",0); integer2 = get_integer("Введите второй множитель",0); integer1 *= integer2 show_message("Произведение: "+string(integer1)) s=0}
if act=3 then s=show_message_ext('Выберите действие:','Сложение','','Вычитание') if s=1 {integer1 = get_integer("Введите первое слагаемое",0); integer2 = get_integer("Введите второе слагаемое",0); integer1 += integer2 show_message("Сумма: "+string(integer1)) s=0}
Давайте разберемся в коде, а то как мы поймем как он работает? Первая строчка означает, что будет выведен текст, "Выберите действие: Умнож/Дел Слож/Выч". Следующая строчка говорит о том, что если выбрана кнопка Умнож/Дел, то нужно выбрать Умножение или Деление. Дальше идет, что если выбран первый вариант, Умножение то идет первое действие, ввести 1 множитель, потом 2 множитель, а дальше эти два числа умножаются и ответ дается после слова Произведение. Дальше код идет аналогично. Далее создайте комнату, любого размера. Туда поставьте объект калькулятора. Запускайте и радуйтесь Вот и конец моей статьи, желаю удачной разработки игр
Здравствуйте! В этой статье мы научимся делать ящики в платформере на 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; }
Это остановка. Теперь создаем комнату, расставляем объекты и радуемся!
Вот мы и создали платформер и сделали в нем ящики. Возможно напишу еще статьи о всяких ловушках и фичах для платформеров, а пока удачной вам разработки игр, новички. Старайтесь и учитесь, добивайтесь лучших результатов и у вас все получится!
Здравствуйте! В этой статье речь пойдет о создании качественного меню на Game Maker: Studio. В игре часто пренебрегают такой мелочью как меню. Здесь мы сделаем хорошее меню, в котором можно будет управлять как стрелками, так и курсором.
Для начала создадим спрайт указателя, он будет указывать, какой пункт меню мы выбрали. Назовем его, например как у меня, spr_seldraw:
Некоторые новички создают кучу спрайтов кнопок, что прибавляет вес к игре, да и вообще это непрактично. Мы же поступим куда более рациональнее, у нас все будет в коде, а вместо кнопок будет текст. Чтобы текст рисовался, добавим скрипт:
Код
var txt, col, str_space;
if !argument5 = false or 0 str_space = argument5 * argument2 else str_space = 17 * argument2;
txt = argument3; col = argument4; draw_set_font(Шрифт);
if !col = false or 0 draw_text_color(argument0,argument1+str_space,argument3,col,col,col,col,100) else draw_text(argument0,argument1+str_space,argument3);
Поясню его значение, просто некоторые могут его не понять: скрипт предназначен для рисования текста и установки особых параметров таких как цвет текста, его расположение и расстояние между строками. * draw_set_font(Шрифт) - здесь вы можете добавить в игру свой шрифт и записать сюда его имя.
Теперь создаем объект obj_drawmenu, без спрайта. Делаем событие Create, в него запишем такой код (комментарии подписал, но я поясню его общее значение и работу с ним):
Код
sel_space = 30; // пробел между пунктами
sel0 = 0; // данные перемернные описывают расположение пункта по вертикали! sel1 = sel_space; sel2 = sel_space * 2; sel3 = sel_space * 3; sel4 = sel_space * 4;
tpl = 0 // переменная отвечает за выделение пункта min_tpl = sel0; // первый пункт max_tpl = sel4; // последний пункт
sel_color = c_yellow; // цвет выделеного пункта def_color = c_white; // цвет не выделенного пункта
Этот код отвечает за пункты меню. Чтобы добавить новый пункт, надо: создать новую переменную например sel5 и задать ей значение sel_space * (номер пункта), а значении переменной max_tpl указать имя нового пункта (sel5) или последнего пункта.
С Create разобрались. Теперь переходим к событие Step. Также записываем код:
Код
if keyboard_check_pressed(vk_down) then begin if tpl = max_tpl then { tpl = min_tpl } // если дальше нет пунктов то возвращаемся на первый пункт. else // когда ниже есть пункт то { tpl += sel_space; // перемещаемся на указанный пробел между пунктами вниз. }
end; if keyboard_check_pressed(vk_up) then begin if tpl = min_tpl then { tpl = max_tpl } // если выше нет пунктов то переходим на последний пункт. else // когда выше есть пункт { tpl -= sel_space; // перемещаемся на указанный пробел между пунктами вверх. }
end;
if keyboard_check_pressed(vk_enter) then begin if tpl = sel0 { ваше действие; } if tpl = sel1 { ваше действие; } if tpl = sel2 { ваше действие; } if tpl = sel3 { ваше действие; } if tpl = sel4 { ваше действие; } end
Чтобы новый пункт работал корректно, в Step'e необходимо провести следующую процедуру: в условии нажатия клавиши "Enter" создать условие "if tpl = (имя пункта) { то что будет выполняться при выборе данного пункта }.
Но как все кнопки будут отображаться? Создаем событие Draw и записываем простой код:
Код
if tpl = sel0 { DrawText(x,y,0,'Ваш_пункт',sel_color,sel_space) } else { DrawText(x,y,0,'Ваш_пункт',def_color,sel_space) } // Если выделен пункт sel0 то рисуем его с цветом выделения, иначе рисуем его с цветом по умолчанию! if tpl = sel1 { DrawText(x,y,1,'Ваш_пункт',sel_color,sel_space) } else { DrawText(x,y,1,'Ваш_пункт',def_color,sel_space) } if tpl = sel2 { DrawText(x,y,2,'Ваш_пункт',sel_color,sel_space) } else { DrawText(x,y,2,'Ваш_пункт',def_color,sel_space) } if tpl = sel3 { DrawText(x,y,3,'Ваш_пункт',sel_color,sel_space) } else { DrawText(x,y,3,'Ваш_пункт',def_color,sel_space) } if tpl = sel4 { DrawText(x,y,4,'Ваш_пункт',sel_color,sel_space) } else { DrawText(x,y,4,'Ваш_пункт',def_color,sel_space) }
draw_sprite(spr_seldraw,0,x-20,y+tpl+6); // рисуем стрелку которая будет сбоку от выделенного текста!
И если вы добавили новый пункт, то в событии Draw необходимо сделать следующее: создать условие if tpl = (имя пункта) { DrawText(x,y,номер строки,'Текст пункта',def_color,sel_space); } else { DrawText(x,y,номер строки,'Текст пункта',def_color,sel_space) }
В идеале объект должен выглядеть примерно так:
Ставим объект в комнату, запускаем, и получаем результат:
Здравствуйте! В этой статье я вам подробно расскажу как создать игру Flappy Bird на Game Maker, при этом с такими же спрайтами и звуками, с качественной анимацией.
Для начала скачайте архив с ресурсами. Теперь откройте Game Maker и загрузите все ресурсы в игру:
Теперь поработаем с основной частью игры - геймплеем. Хотя по сути это единственный этап где от вас понадобится терпение и труд. Создаем объект. Назовем его player. Спрайт ему дадим хотя бы синей птицы. Создаем событие Create и записываем код (к чему вы уже должны привыкнуть):
Код
instance_create(0,0,o_st); instance_create(0,0,control); image_speed=0.8; alarm[0]=room_speed*3; loh=0; zz=0; sh=0; ini=0; score=0; switch choose(1,2,3) { case 1:sprite_index=spr_b1;break; case 2:sprite_index=spr_b2;break; case 3:sprite_index=spr_b3;break; } sound_play(s_wing); vspeed=-10; image_angle=30; image_index=1;
Что он означает и какова его роль? Попробуйте разобраться с этим сами. Разобрались? Теперь сравните ваши догадки с правильным ответом: этот код предназначен для того чтобы у птица была физика и гравитация, появления рандомного спрайта птицы и проигрывания звука. Теперь переходим к событию Alarm 0, вписываем туда код:
Код
if loh=0 { instance_create(280,random_range(-300,-80),o_block); alarm[0]=room_speed*1.8; }
Он нужен для того, чтобы птица пролетала через блоки (которые мы создадим позже). Теперь своей очереди ждет событие Step, туда тоже записываем код:
Код
if loh=0 {vspeed+=1;}
if (zz=0 && vspeed>0) {image_angle-=5;}
if image_angle<-91 {image_angle=-90;}
if y>320 {y=320;}
if y<0 {y=0;}
Он нужен для основных движений птички. Теперь создаем событие Glob Left Presed, записываем код:
Код
if loh=0 { sound_play(s_wing); vspeed=-10; image_angle=30; image_index=1; }
Он нужен для проигрывания звука и подлета птицы при нажатии ЛКМ. Теперь создаем событие press any key, вписываем код:
Код
if hol=0 { sound_play(s_wing); vspeed=-10; image_angle=30; image_index=1; }
Он выполняет тоже самое, но при нажатии любой из кнопок.
Создаем объект o_block, даем спрайт препятствий столбов. Делаем событие Create, туда вписываем код:
Код
hspeed=-4; instance_create(x+16,y+340,o_point);
Поясню значение кода: в игре Flappy Bird есть секрет, который заключается в том, что движется не птичка, а столбы. Так вот, этот код нужен для движения столбов. Сверху например указана горизонтальная скорость. Вот и готов объект столбов:
Теперь создаем объект o_earth, присваиваем спрайт земли. Создаем событие Create, вписываем код:
Код
hspeed=-4;[/code[
Он задает скорость земле. Теперь создаем событие Outside Room (Вне границ комнаты) и вставляем функцию Wrap Screen, выбираем значение horizontal. Вот так должен выглядеть объект o_earth:
Возвращаемся к объекту player, добавляем событие Столкновение с o_block. Здесь нам надо поработать. Вставляем функцию Test Variable, вводим следующие значения:
variable: sh value: 0 operation: equal to
Теперь вставляем Start of a block и End of a block. Между ними ставим событие Create Effect, пишем туда то же самое, что и на скриншоте:
После впишем код:
Код
hol=1; if sh=0 { sound_play(s_die); instance_create(0,0,o_st); sh=1 }
Он обеспечивает проигрывание звуков при столкновении со столбами. sh - переменная! Теперь делаем функцию Move Fixed и задаем такие значения как на скриншоте:
Ну и теперь создаем событие столкновения с землей. Вписываем такой код:
Это если птичка упадет. Теперь событие Move Fixed. Здесь просто нажмите на квадратик в центре и сохраните. Все, объект player закончен. Остался только объект o_point. Создаем в нем событие Create, вписываем код:
Код
hspeed=-4;
Так мы задали скорость. Теперь создаем столкновение с объектом player. Также вписываем код:
Это если птичка успешно пройдет между столбами. Работа с геймплеем окончена. Теперь создаем комнату, оптимальный размер будет 288 на 360. Расставляем объект игрока и земли, ставим наш фон. Также нам нужно правильно настроить виды:
Все, можем запускать игру и наслаждаться своим трудом и терпением. Удачи вам!
Добавлено (17 мая 2015, 16:21) Добавлена статья о создании Flappy Bird.
Сообщение отредактировал MasterSambo - Воскресенье, 17 Мая 2015, 16:22