Уроки, Туториалы, Мануалы со всего света!

На этом форуме, будет находится огромное количество уроков и мануалов, сделайте небольшой вклад, и опубликуйте хотя бы один урок.
Текущее время: 20-10, 08:07

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 24-03, 16:36 
Не в сети
Пока что, только учусь!

Зарегистрирован: 24-03, 16:28
Сообщения: 1
Супер урок для начинающих по Game Maker (v8 платформенная игра)

Изображение

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

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

Итак, приступим:
Для начала создадим спрайты (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 перетаскиваем иконку, кода в поле действии
• В поле кодов пишем следующие коды, этот код осуществляет гравитацию для игрока (сила тяжести).
Код:
{
  // устанавливаем силу тяжести (гравитация)
  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 (это вы уже знаете, как сделать, повторяться не буду!) и пишем следующий код.
Код:
{
  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 означает скорость движение объекта.
Код:
 {
  if place_free(x-4,y) x -= 4;
}

Далее создадим событие верхней клавиши.
Изображение
В действии перетаскиваем иконку кода и в поле пишем код прыжка (-11 – чем меньше это значение, тем высоко прыгнет ваш игрок).
Код:
{
  if (not place_free(x,y+1)) vspeed = -11;
}

Далее создадим событие правой клавиши.
Тоже самок как и с левой клавиши (только спрайт поставьте P_R), но код будет отличатся этим:
Код:
{
  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 перетаскиваем иконку кода в поле действии
• На поле кодов напишем следующие коды, этот код вынуждает врага стрелять на игрока с определенный дистанции (здесь добавлена и гравитация).
Код:
{
 // устанавливаем силу тяжести (гравитация)
  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;
        }
    }
}

:_shocked_: ! Обратите внимание, что в коде присутствует название объекта игрока (player) и пули врага (boll2),если вы не назвали их как я, то переименуйте их на свой.
Изображение
Далее перетащите иконку проверка переменной и настройте, как показана на рисунке выше (он проверяет горизонтальное движение(hspeed)).
Изображение
• Далее перетаскиваем иконку колобка и выбираем спрайт врага, движущегося направо (V_R).
• Перетаскиваем иконку Else во вкладке control
• Перетаскиваем еще одного колобка, но уже с V_L
Далее создадим событие столкновение с объектом jump(он невидим).
Изображение
Перетаскиваем код, в него пишем код прыжка, которые при столкновении враг будет прыгать, вот этот код(этот код мы использовали и для игрока):
Код:
{
  if (not place_free(x,y+1)) vspeed = -11;
}

Далее создадим событие столкновение с объектом пули врага(boll1).
Изображение
• Во вкладке main1 перетащите корзинку, переключите на другой
• Перетащите иконку здоровья, пишите значения -25(при столкновении у врага отнимается здоровья на 25%).
• Поставьте галочку на относительно
Далее создадим событие столкновение с объектом блока(box).
Изображение
• Во вкладке move перетаскиваем иконку горизонтальное столкновение, то есть враг столкнется со стеной в горизонтальном направлении, то примет обратное направление.
• Перетащите код и пишите следующее:
Код:
{
  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
• Понаставим объекты и нажмем на верхнюю галочку
• Потом в панели инструментов нажимаем на зеленый треугольник (знак запуска игры)
Вот и всё!!!

Ссылка для примера Super_lessons_GM.rar


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by Forumenko © 2006–2014
Русская поддержка phpBB