Пятница, 29 Марта 2024, 04:29

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

Меню сайта
Категории каталога
Создание игр [354]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [144]
Статьи о программах для создания игр, уроки и описания.
Софт [39]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [160]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [128]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Как часто вы играете?
Всего ответов: 1062
Главная » Статьи » Создание игр

Game maker. Основы. Создание игры. Часть 2
Зачем мне это читать?

В статье будут рассмотрены следующие платформер-вопросы: перемещение объекта (влево, вправо) прыжок, двойной прыжок, приседание, бег, ходьба и лазанье по лестнице (вверх, вниз), стрельба, соскальзывание с неровной поверхности, - это всё, что так или иначе касается физики игрового мира; вражеские персонажи, которых мы научим нас убивать, перемещаться (ходить, прыгать, плавать, лазать по лестнице и, конечно, умирать) т.е. простой ИИ (искусственный интеллект). Теперь Вы знаете, читать ли дальше.

Несколько простых рисунков.

Для создаваемых объектов нам потребуются спрайты. В прошлый раз мы научились создавать объекты, но как Вы заметили - они были без какого-либо рисунка. Сейчас научимся рисовать и присваивать объекту соответствующий спрайт. Рисунки будут примитивны. На более приятные заменим чуть позже.

Нажав на Shift+Ctrl+S Вы откроете окно свойств вновь созданного спрайта. Свойства спрайта будут рассмотрены позже.

В поле для ввода текста "Name" Вы можете написать имя спрайта (пожалуйста, привыкайте давать осмысленные имена всем ресурсам Вашей игры). Нажмите на кнопку "Edit Sprite", далее, как и показано на следующем рисунке, нажмите на кнопку "Create a new sprite",

в появившемся меню укажите размеры спрайта как на рисунке ниже.

Нажмите на кнопку "Ок", откроется следующая картина

Щелкните дважды левой кнопкой мыши на "image 0", и Вы окажетесь в редакторе похожем на Paint. Залейте серым цветом всю свободную область рисунка, чтобы получить нечто вроде этого.

Как Вы уже догадались, это будет наш пол. Теперь нарисуем главного героя. Вот как он выглядит у меня (при создании спрайта главного героя, укажите следующие размеры: width – 20, Height - 60).

Присвоение объекту спрайта

Теперь нам нужны два объекта, создайте их (ссылка на предыдущую статью). Сейчас мы научимся назначать созданные спрайты созданным объектам. Щелкните дважды левой кнопкой мыши на имя объекта, который Вы создали, и в появившемся окне нажмите на кнопку которая выделена курсором мыши (рисунок ниже).

После нажатия откроется меню выбора спрайтов. Выберите спрайт с именем "s_floor",

поскольку мы редактируем объект "o_floor" т.е. пол, по которому и будем ходить. Другие настройки пока не трогайте. Проделайте тоже самое с объектом "o_player" назначив ему спрайт с именем "s_player". Создайте комнату и поместите в неё созданные объекты ссылка на предыдущую статью) так, как это показано на рисунке (хотя бы примерно).

Несколько простых действий

Ладно, с рутиной покончено. Сейчас он у нас научится прыгать, ходить (пока без анимации), приседать (чтобы мы могли добраться до правой части экрана не прыгая.), двойному прыжку (чтобы допрыгнуть до верхней платформы).
Вы уже знаете как добавить объекту событие и действие на него (ссылка на предыдущую статью). Создайте для объекта "o_player" событие "Create" и на это событие добавьте действие "Execute Code". В открывшемся редакторе кода напишите:

// действие "Execute Code" для события "Create" объекта "o_player"
// объявим несколько переменных, с помощью
// которых будем отслеживать состояние игрока.
crouch=false // ГГ должен уметь приседать.
// Если значение true, значит присел, иначе - стоит.
jump=false //Находится ли ГГ в состоянии прыжка.
jumpd=false // Был ли двойной прыжок

Далее добавьте объекту "o_player" событие "Step" и также назначьте ему действие выполнения кода "Execute Code". Напишите там следующее:

// действие "Execute Code" для события "Step" объекта "o_player"
if place_free(x,y+5)
// place_free(x,y) - функция предназначена для проверки возможного столкновения. Ииспользуется
// перед перемещением объекта, в данном случае - y+5, проверяем, если по y координате
// относительно объекта место свободное, то ...
{
vspeed+=1 // Вертикальная скорость объекта будет увеличиваться. Подобное свойство есть у каждого объекта.
// Поскольку действие выполняется в событии "шаг", то и скорость будет увеличиваться каждый шаг (при условии, что место
// y+5 свободно). Таким образом наш объект будет падать.
}
else

if !place_free(x,y+vspeed)// для столкновения с полом.
// здесь тоже самое. Но, появился знак "!". Теперь, что бы наше условие выполнилось,
// выражение place_free(x,y) должно быть ложным, т.е. если место не свободно,
// то выполняем следующий в скобках код.
// Если место не свободно
{
vspeed=0 // вертикальная скорость = 0.
jump=false
jumpd=false // обе переменные устанавливаются в false, что бы мы могли прыгать снова.
}

if !place_free(x,y-11) // это нужно для столкновения с потолком.
{
jumpd=true
vspeed+=2
}

if keyboard_check(vk_right) // проверка на нажатие кнопки клавиатуры. В данном случае - "стрелка вправо"
{

if place_free(x+5,y-8) x+=5 // проверяем, если место свободно, то меняем местоположение объекта по X координате
// заметьте, y-8 - это что бы в полу не застревать.
}

else

if keyboard_check(vk_left) //Теперь нам нужна "стрелка влево"
{
if place_free(x-5,y-8) x-=5
}

// Остальное - Вам в качестве домашнего задания. Поэксперементируйте со значениями переменных.

// прыжок
if keyboard_check_pressed(vk_up)
{
if crouch and place_free(x,y-30)
{
crouch=false
image_yscale=1
y-=20
} else

{
if jump=true
{
if jumpd=false
{
jumpd=true
vspeed=-10
}
}

if jump=false
{
jump=true
vspeed=-10
}
}
}
//приседание
if keyboard_check(vk_down)
{

if jump exit
if crouch=false
{
crouch=true
image_yscale=0.40
//y+=5
}

}
// keyboard_check_released() – проверяет какая клавиша была отпущена.
// в данном случае - vk_space, т.е. пробел.
if keyboard_check_released(vk_space)room_restart()
//

Что получилось?

Пока ничего, что можно назвать игрой - мы пока учимся. Запустите игру нажав "F5" и убедитесь в том, что всё работает. Теперь наш главный герой (далее ГГ) умеет ходить, прыгать (дважды), приседать. Написанный код не представляет из себя большой практической ценности, и представлен для ознакомления с основами GML (Game maker language). Вы могли заметить, что столкновения проверяются недостаточно точно (ГГ, бывает, застревает в полу. А иногда, будто парит над ним), - это будет исправлено в третьей части; в ней же будут рассмотрены остальные упомянутые вопросы.

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

Следите за продолжением.

Категория: Создание игр | Добавил: Spihex (04 Мая 2010)
Просмотров: 17337 | Комментарии: 12 | Рейтинг: 4.2/6 |
Теги: Урок, Game Maker, плаформер, Статья, основы
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

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

Всего комментариев: 12
+0-
11 Adews   (19 Июня 2010 16:43) [Материал]
AdewsЖду, не дождусь третьего урока. Когда планируется?

+0-
12 Spihex   (19 Июня 2010 16:47) [Материал]
SpihexПрошу меня извинить, с третьей немного задержался. Уже почти закончил писать, дней пять осталось.

+0-
7 gamerX   (01 Июня 2010 20:10) [Материал]
Shift+Ctrl+S
Вообще то Alt+Ctrl+S

+0-
8 Spihex   (02 Июня 2010 01:43) [Материал]
Spihexхм.. какая у Вас версия? В восьмой именно так, как было написано.

+0-
9 gamerX   (15 Июня 2010 17:40) [Материал]
У меня восьмая smile

+0-
10 gamerX   (15 Июня 2010 17:41) [Материал]
Я не заметил cry Сорри

+2-
1 QWER56   (06 Мая 2010 15:12) [Материал]
QWER56Молодец! respect

+0-
2 Spihex   (06 Мая 2010 15:14) [Материал]
SpihexСпасибо.
По-настоящему интересные вещи начнутся в третьей части smile

+2-
3 QWER56   (06 Мая 2010 16:35) [Материал]
QWER56Буду ждать, мне как новичку это очень интересно!

+0-
4 Spihex   (06 Мая 2010 16:39) [Материал]
SpihexЕсли в статье что-то непонятно, то можно задать вопрос в ЛС.
После публикации третьей части, будет создана спец. ветка форума, где можно будет всё обсудить более детально.

+0-
5 Kolya0894   (10 Мая 2010 19:02) [Материал]
Kolya0894Срочно пиши третью часть! Очень жду!!! biggrin

+0-
6 Spihex   (11 Мая 2010 03:52) [Материал]
SpihexДве с половиной недели осталось. Примерно. smile

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • EDGE
  • PureBasic
  • lifeEngine
  • Game Editor
  • ORTS
  • Neobook
  • TotoyeVN
  • Empty Clip
  • GameStart
  • J2DS
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг