Урок для начинающих по Game Maker v8 (платформенная игра) - Game Maker - Конструкторы игр, системы разработки игр
Навигация по сайту
Сайт:

Дополнительно:

Файловый архив:

Каталог статей:

Форум:


Категории раздела
Game Maker [27]
Flash [3]
FPS Creator X9, X10 [1]
Scirra Construct [14]
Multimedia Fusion [0]
001 Game Maker, Map 001 [0]
3D RAD [16]
3D Game Studio [1]
Silent Walk FPS Creator [0]
Blender (Блендер) [1]
Game Editor [0]
Остальное [1]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Какой платформой Вы пользуетесь?
Всего ответов: 1025

Партнеры сайта
....

 Главная » Статьи » Конструкторы игр, системы разработки игр » Game Maker » Урок для начинающих по Game Maker v8 (платформенная игра)

Урок для начинающих по Game Maker v8 (платформенная игра)

20:10
Супер урок для начинающих по Game Maker (v8 платформенная игра)

Автор: Хазгалиев Денис
Начало разработки: 22 Марта 2011 год.
Конец разработки: 24 Марта 2011 год.
Язык туториала: русский

Урок знакомит нас как создать первую 2D платформенную игру. Включает основы добавление спрайтов, действия и события, создание врага, создание жизней.
Каждый дилетант хочет создать свой супер экшен, и я вам помогу создать его основу.

Итак, приступим:
Для начала создадим спрайты (Sprites).
Спрайты – это как бы внешний вид персонажи, стенок… (с анимации или без).
Создадим спрайт главного игрока

• Называем его P_L, то есть, анимация движений налево (имя не имеет значение, вы можете назвать любое другое имя).
• Нажмите на кнопку «Загрузить Спрайт».
• В окне выберите свои спрайты, я выбрал 3 спрайта (32х64), которым в дальнейшем будет анимироваться как движение налево
• Нажмите «открыть» и нажмите ОК

Далее нам нужно убрать фон:
• На вкладке Sprites два раза нажмите на спрайт (P_L)
• Нажмите на кнопку «Редактировать»
• На верхнем панеле изображений выберите «стереть цвет» и нажмите ОК

То же самое делайте и со спрайтом, который движется направо (для удобства можно сделать отражение в редакторе на верхней панели трансформации).
В общем, должны быть следующие спрайты (Sprites).
• P_L – спрайт игрока, двигающийся налево(32х64)
• P_R – спрайт игрока, двигающийся направо(32х64)
• stop – спрайт игрока стоящего (32х64)
• V_R – спрайт врага, двигающийся направо(32х64)
• V_L – спрайт врага, двигающийся налево(32х64)
• ammo – спрайт пистолета(32х32)
• mas – спрайт маска для игрока и врага он должен совпадать с их размерами(в моем случае черный прямоугольник 32х64)
• jump – спрайт прыжка (действует только для врага) (черный квадрат 32х32)
• boll1 – спрайт пуля игрока(черный квадрат 12х12)
• boll2 – спрайт пуля врага(красный квадрат 12х12)
• box – спрайт твердый блок это и пол, потолок, стена…(32х32)
• lives – спрайт жизни игрока, который будет висеть на левом верхнем углу(32х32)

Всё со спрайтами, то есть с внешними видами разобрались.
Теперь начинаем создавать объекты(Objects), которые и будут действовать в игре.
Создадим объект игрока

• Называем его player (имя не имеет значение, вы можете назвать любое другое имя).
• Выбираем любой спрайт игрока (я выбрал спрайт stop).
• Для маски выбираем спрайт mas
• Нажимаем ОК
Маска нужна, чтобы игрок не застревал на твердые блоки (компьютер будет думать, что игрок черный прямоугольник).

Тоже самое делаете и для врага – имя vrag, маска та же(они одинаковы с игроком), любой спрайт врага.
Маски нужно ставить только для игрока и для врага, а на других не надо.
Для объекта блока выбираем спрайт box, соответственно называем объект box и в его настройках ставим галочку на твердый.

Для объекта прыжка (для врага) выбираем спрайт jump, соответственно называем объект jump и в его настройках убираем галочку с видимый.

Далее создайте остальные объекты с выбранными спрайтами в соответствии с их именами.
Итак, подведем итог:
• Объект player – выбран спрайт stop, выбран спрайт маски mas
• Объект vrag – выбран спрайт V_R, выбран спрайт маски mas
• Объект ammo – выбран спрайт ammo
• Объект control – для него спрайт не надо ставить, он будет рисовать жизнь игрока и здоровье врага.
• Объект jump – выбран спрайт jump, вставлен галочка на твердый.
• Объект boll1 – выбран спрайт boll1
• Объект boll2 – выбран спрайт boll2
• Объект box – выбран спрайт box, снят галочка из видимый

Спрайты готовы, объекты готовы, отлично!!!
Теперь начнем самый важный раздел «события и действия».
Начнем с игрока.

• Откройте объект игрока (player) на вкладке Objects
• Нажмите на кнопку «Добавить событие», потом на кнопку «Создание»
Создается событие Create, то есть, что будет создаваться в начале, а создаваться будет 3-жизни и 0-пуль, давайте это сделаем.

• На вкладке score перетаскиваем соответствующую иконку, как показано на рисунке в поле действии.
• На поле ставим ноль
• На «относительно» галочку не ставим (по умолчанию он пустой).
• Так же делаем и с сердечком и ставим три

Далее создадим событие шаг

• Создается событие Step
• Во вкладке control перетаскиваем иконку, кода в поле действии
• В поле кодов пишем следующие коды, этот код осуществляет гравитацию для игрока (сила тяжести).

Code

{
   // устанавливаем силу тяжести (гравитация)
   gravity_direction = 270;
   if place_free(x,y+1)
     gravity = 0.9
   else
     gravity = 0;
   // ограничиваем скорость
   if (vspeed > 12) vspeed = 12;
}

Далее создадим событие столкновения.

• Выбираем объект пистолета (ammo), создается событие ammo.
• Перетаскиваем в действии уже известную иконку, пишем 20 и вставим галочку на относительно, то есть при столкновении с объектом ammo должен стать у игрока 20 пуль, но есть одна проблемка, при столкновении 20 пуль он даст, а исчезать не будет, для решения этой проблемы нужно:
1 на вкладке main1 находим иконку корзины и перетаскиваем в поле действии
2 переключаем на «другие», если мы бы переключили на «себе», то исчез бы игрок, а так исчезает другой объект, а именно объект ammo.
Далее создадим событие столкновения.

• Выбираем объект пуля врага (boll2)
• Создаем действия как показано на рисунке, то есть при столкновении:
1 отнимается одна жизнь
2 пуля исчезает
3 игрок перемежается в начальное место
Далее создадим событие столкновения.

Ставим код для блока, то есть для объекта box (это вы уже знаете, как сделать, повторяться не буду!) и пишем следующий код.
Code

{
   if (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270);
   vspeed = 0;
}

Далее создадим событие не нажатой клавиши.

• Нажмите на кнопку «Добавить событие» потом на «клавиатура».
• Выберите No key, то есть клавиша не нажато
Что будет делать игрок, когда не одна клавиша не нажато?
Он ничего не будет делать, только нарисуется стоящий спрайт - это спрайт stop, для этого:

• На вкладке main1 перемежаем иконку колобка ? в поле действии.
• Выбираем спрайт stop
Далее создадим событие левой клавиши.

Клавиатура потом «влево» и появится событие Left
В событие перетаскиваем следующие действии:

• В настройки колобка ставим спрайт движущиеся влево (P_L).
• На subimage пишем all (помнете ли вы когда мы создали спрайт с тремя кадрами), почему all(все)?, потому, что мы выбираем все 3 спрайта и получатся анимированный спрайт, если мы бы поставили например 2, то рисовалось бы только 2-ой кадр спрайта.

• На speed пишем 0.5 – это скорость анимации(вы можете написать другое значение в зависимости от скорости движение объекта, которые сейчас будем определять).
• Перетаскиваем иконку кода и пишем в поле код движение объекта налево, значение 4 означает скорость движение объекта.
Code

  {
   if place_free(x-4,y) x -= 4;
}

Далее создадим событие верхней клавиши.

В действии перетаскиваем иконку кода и в поле пишем код прыжка (-11 – чем меньше это значение, тем высоко прыгнет ваш игрок).
Code

{
   if (not place_free(x,y+1)) vspeed = -11;
}

Далее создадим событие правой клавиши.
Тоже самок как и с левой клавиши (только спрайт поставьте P_R), но код будет отличатся этим:
Code

{
   if place_free(x+4,y) x += 4;
}

Далее создадим событие «нет больше жизни».

• Нажмите на кнопку «Добавить событие» потом на «Другие».
• Выберите «нет больше жизни» и создается событие No More Lives.
Для него создаем действие, которые игра начнется заново, если не будет больше жизни.

На вкладке main2 перетащите иконку Restart
Далее создадим событие «нет больше здоровья».

В событии No More Health (нет больше здоровья) будем делать действие, которые при истечение здоровий, враг исчезнет.
Для этого:
• Перетащите корзинку из вкладки main1.
• Переключите на «Объект» и выберите объект врага (vrag)
Далее создадим событие «Клавиша нажата».

• Нажимаем на кнопку «Добавить событие» потом на «Клавиша нажата», если мы выбрали бы «Клавиатура», то игрок стрелял бы как из пулемета и 20 пуль закончились бы в один миг.
• Выбираем Space (клавиша пробел) и создается событие press <Space>
В действии перетаскиваем следующие иконки:

Перетаскиваем проверку пули и настраиваем, как показано на рисунке.
Далее перетаскиваем иконку блок начало (Start block) и иконку проверки переменной (Test Variable) на вкладке control.

• В настройках Test Variable на variable пишем sprite_index
• На operation выбираем equal to
• На value пишем название спрайта движущегося налево, почему?, потому, что если рисоваться этот спрайт, то будет какая - то реакция, эту реакцию мы будем создавать в виде пули, исходящий из игрока и движущегося в левую строну.
Для этого:

• Перетащите иконку Create moving в поле действии
• В настройках Create moving на object выбираем пулю игрока (boll1)
• На X и Y рассчитываем источник пули как показано на рисунке ниже
• На speed пишем 12 (скорость пули)
• На direction пишем значение по направлению, в нашем случае налево, значение 180
• Обязательно ставьте галочку на относительно

Далее создайте копии этих двух иконок Test Variable и . Create moving

измените их настроек так:
• Для Test Variable измените P_L на P_R
• Для Create moving измените значение 180 на 0
Далее нам нужно чтобы при нажатии пробел(Space)количество пуль уменьшилась на 1
Для этого:

• Перетащите иконку Set Score в поле действии
• В настройках напишите значение -1 и ставьте относительно
• Перетащите конечный блок во вкладке control
Всё с объектом игрока(player) закончили!!!
Теперь начнем с объекта врага (vrag).

• Откройте объект врага (vrag) на вкладке Objects
• Нажмите на кнопку «Добавить событие» потом на кнопку «Создание» (Создается событие Create, то есть, что будет создаваться в начале).
• В событии перетаскиваем переменные в поле действии со значениями(эти переменные нужны для событие шага):
Первое переменное variable – firing, value – 0
Второе переменное variable – target, value – noone
Третье переменное variable – range, value – 300
Четвертое переменное variable – rate, value – 1
Пятое переменное variable – damage, value – 50

Далее перетаскиваем иконку здоровья, пишем значения 100 (в начале у врага будет 100% здоровья).
Во вкладке move найдите иконку с красными стрелками и настройте, как показана на рисунке, то есть в начале враг будет двигаться вправо или влево со скоростью 4.
Далее создадим событие шаг

• Создается событие Step
• Во вкладке control перетаскиваем иконку кода в поле действии
• На поле кодов напишем следующие коды, этот код вынуждает врага стрелять на игрока с определенный дистанции (здесь добавлена и гравитация).
Code

{
  // устанавливаем силу тяжести (гравитация)
   gravity_direction = 270;
   if place_free(x,y+1)
     gravity = 0.5
   else
     gravity = 0;
   // ограничиваем скорость
   if (vspeed > 12) vspeed = 12;     
      
     var ii, dist, xx, yy;
     if firing > 0 firing += 1;
     if firing = 30/rate firing = 0;
     if not instance_exists(target) target = noone;
     if instance_exists(player)
     {
         if target = noone target = instance_nearest(x,y,player);
         if point_distance(x,y,target.x,target.y) > range
             target = noone;
         else if firing = 0
         {
             firing = 1;
             //Create a bullet
             ii = instance_create(x,y,boll2);
             dist = point_distance(x,y,target.x,target.y)/24;
             xx = target.x+target.speed*dist*cos(target.direction*pi/180);
             yy = target.y-target.speed*dist*sin(target.direction*pi/180);
             ii.speed = 6;
             ii.direction = point_direction(x,y,xx,yy);
             ii.damage = damage;
         }
     }
}

Обратите внимание, что в коде присутствует название объекта игрока (player) и пули врага (boll2),если вы не назвали их как я, то переименуйте их на свой.

Далее перетащите иконку проверка переменной и настройте, как показана на рисунке выше (он проверяет горизонтальное движение(hspeed)).

• Далее перетаскиваем иконку колобка и выбираем спрайт врага, движущегося направо (V_R).
• Перетаскиваем иконку Else во вкладке control
• Перетаскиваем еще одного колобка, но уже с V_L
Далее создадим событие столкновение с объектом jump(он невидим).

Перетаскиваем код, в него пишем код прыжка, которые при столкновении враг будет прыгать, вот этот код(этот код мы использовали и для игрока):
Code

{
   if (not place_free(x,y+1)) vspeed = -11;
}

Далее создадим событие столкновение с объектом пули врага(boll1).

• Во вкладке main1 перетащите корзинку, переключите на другой
• Перетащите иконку здоровья, пишите значения -25(при столкновении у врага отнимается здоровья на 25%).
• Поставьте галочку на относительно
Далее создадим событие столкновение с объектом блока(box).

• Во вкладке move перетаскиваем иконку горизонтальное столкновение, то есть враг столкнется со стеной в горизонтальном направлении, то примет обратное направление.
• Перетащите код и пишите следующее:
Code

{
   if (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270);
   vspeed = 0;
}

Всё с действующими лицами разобрались
Теперь начнем рисовать жизнь игрока и здоровья врага.

• Откройте объект control на вкладке Objects
• Нажмите на кнопку «Добавить событие» потом на кнопку «Рисование» (Создается событие Draw).

• Перетащите иконку рисование здоровья и настройте, как показано на рисунке (здоровье будет висеть чуть пониже, чем жизнь).
• Перетащите иконку рисование жизни в место х и у ставим 0, то есть будет висеть на левом верхнем углу, и выбираем спрайт жизни (lives).
Переходим к объекту пуль игрока (boll1) во вкладке Objects

• Создадите событие «создание» и перетащите переменной с настройками variable – damage, value – 0
• Создайте событие столкновение блока и перетащите корзинку (при столкновении с блоком пуля исчезает)
Переходим к объекту пуль врага (boll2) во вкладке Objects
• Создайте событие столкновение блока и перетащите корзинку (при столкновении с блоком пуля исчезает)
Всё теперь остался последний штрих, создание комнаты игры.
Для этого:

• Во вкладке Rooms (после вкладки Objects) кликнем правой кнопки мышки, и выбираем Create rooms и создается пустая комната
• Для удобства настроем комнату 32 на 32
• Понаставим объекты и нажмем на верхнюю галочку
• Потом в панели инструментов нажимаем на зеленый треугольник (знак запуска игры)
Вот и всё!!!

Категория: Game Maker | Просмотров: 7552 | Добавил: DenHaz (15.10.2012) | Рейтинг: 4.0/1
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Создание RTS игры (2)
Создание базового движка для игры. Часть 1. Графика и клавиатура (0)
Статья по движку Maratis (0)
Создание базового движка для игры. Часть 2. Анимация, Столкновения и воспроизведения музыки (0)
Создание TDS (0)
Учебник по Blitz 3D (0)
Создание 3D игр на Game Maker (3)
3d Rad - Как добавить свою модель (6)
Несколько советов (ГМ) (0)
Организация 3Д камеры в Game Maker (0)
Уроки по C/C++ (Части с 1 по 20) (0)
Массивы (0)
Создаем танчики (0)
Blitz 3D - полезная дипломная работа (часть 2) (0)
Пишем игровой сюжет (10)
Всего комментариев: 1
1 general144   (20.12.2012 15:12) [Материал]
if firing = 30/rate firing = 0; здесь он видит ошибку

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Поиск по всему сайту:
Поиск по разделу:

Панель пользователя
Здравствуйте, Гость


Ник:
Пароль:
Запомнить :

Ваш IP: 13.59.61.119

Случайные конструкторы

Случайные движки

Случайные статьи

Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

На сайте были:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2024 Хостинг от uCoz
Топ Разработка игр