Приветствую Вас, Гость | RSS
Суббота, 27.04.2024, 05:34
Главная » Статьи » Уроки [ Добавить статью ]

Делаем стрелялку
Создаем стрелялку, первые шаги
1. Основы.
Game Maker - вещь, с помощью этой проги можно создать неплохую аркаду. У этого движка графику можно задать самому, т.е. как спрайты нарисуешь, такая и графика будет. У этого движка есть отличительные способности, о которых нельзя не упомянуть:
1) В общем, там для создания игрушки не нужно писать ни одной строчки (только если игра сложная, то там все-таки нужно, но для простых игр не надо).
2) Как уже говорил, какой спрайт нарисуешь - такова будет и графика (ну вообще графика зависит не только от спрайта, но и от разрешения).
3) Полностью интуитивный интерфейс.
Мы будем создавать аркадную игру и на ее примере вы сможете создавать и другие интересные игры. 2. Вот основные определения:
1. Sprites - спайты - изображения, которыми мы будем оперировать.
2. Sounds - звуки, которые можно назначать.
3. Backgrounds - изображения, используемые как фон.
4. Paths - путь, линия вдоль которой движется объект.
5. Scripts - скрипты или сценарии работы программы.
6. Objects - объекты.
7. Rooms - комнаты, где будут происходить действия.
№ 1
Назначаем спрайты:
Нажмем кнопку Add Sprite и назначим спрайт Fighter1 (находится в папке Space) назовем его "корабль1". Назначим Fighter2 нажмем Edit Sprite далее Transform \ Rotate 180 (Rotate: можно назначить направление спрайта, а щелкнув еще раз на изображение мы можем его изменить) назовем корабль2. Ну и dot (папка Pacman) назовем его выстрел и explode2 (Varius) назовем взрыв.
№ 2
Назначаем объект Add Object - спрайт "корабль1" и называем его корабль1.
Назначаем объект Add Object - спрайт "корабль2" и называем его корабль2.
Назначаем объект Add Object - спрайт "Выстрел" и называем его выстрел.
Назначаем объект Add Object - спрайт "взрыв" и называем его взрыв.
№ 3
Аналогично назначаем звуки, их нам надо 2 штуки. 1 для взрыва, 2 для выстрела.
№ 4
Далее назначаем фон он может быть любым.
№ 5
Теперь переходим к объекту "корабль1" далее делаем по пунктам:
Наша задача заключается в том, чтобы объект двигался при нажатии кнопки и стоял при отжатии.
1) Add Event \ Key press (и назначаем кнопки лево, право, пробел); (т.е. при нажатии выполняются действия).
2) В лево переводим действие Start moving in a direction и нажимаем на стрелку влево (ниже находится скорость по умолчанию - 8) .
3) Тоже с право.
4) Add Event \Key release (лево, право); (т.е. при отжатии клавиши) нажимаем Start moving in a direction и ставим стрелку посередине ( т.е. при отжатии останавливается).
5) Переходим к выстрелу Add Event \ Create.
6) Далее в вкладке и ставим звук (т.е. Misk \ Play a sound ) выстрела.
7) Start moving in a direction и нажимаем направление движения пули т.е. вверх и со скоростью 16 и галочку Relative.
8) Вернемся к "корабль1" и при нажатие пробела (т.е. press пробел) ставим object \ Create:(лампочка) ставим объект выстрел и галочку Relative. (т.е. при нажатии пробела выстрел).
9) Далее создаем комнату в вкладке Backgrounds ставим свое изображение.
10) Там же (т.е. в этой комнате в вкладке Object) кликаем объект "корабль1" и ставим его снизу.
11) Нажимаем F5 и балдеем он летает и стреляет с характерным звуком.

12) Теперь нужно сделать противников. Это будет "корабль2" этот противник будет только летать строго вперед и ваша задача его поразить или увернуться. Действовать будем так сначала он или они появляться сверху, при выходе за пределы комнаты появится сверху (0 по вертикали и любой по горизонтали) если встречается с пулей -то он возникает в новой позиции как уже писал и нужно его заменить на объект "взрыв" который при окончании анимации удалит этот объект. А и не забыть удалить выстрел и зачислить на счет одно очко. И при столкновение с нашим героем вывести счет и начать игру заново. Фу: кажется все. Задача не особо простая, но реальная, главное - логика! Если все логично - то игра будет работать как надо.
13) Теперь переходим к "корабль2" добавляем создание объекта (т.е. Add Event \ Create \ Set the vertical speed и ставим значение 4 (т.е. вниз со скоростью 4 если -4 то будет лететь в другую сторону).
14) Далее Add Event \ collision и выбираем объект "корабль2" (т.е. событие столкновения "корабль1" c "корабль2" если помните то при этом мы перезапускаем и выводим счет. Т.е. в вкладке Misc \ Show the highscore table и Restart the game.
15) Add Event\ collision "выстрел" Set the score в той-же вкладке и набираем +1. Там-же Play a sound и звук взрыва. В вкладке Move \ Jumb to a given position и пишем в x (random(1+640)) .
16) Add Event \ other \ Outside room (т.е. при покидании границ комнаты) следующее действие вкладке Move \ Jumb to a given position и пишем в x (random(1+640)) .
17) Теперь осталось сделать взрыв. Он выглядит так при столкновении объекта с выстрелом мы должны заменить выстрел на взрыв и когда анимация кончится просто его удалить. Сделаем это так в выстреле Add Event \ collision и выбираем объект "корабль2" и далее в вкладке Object \ Change the instanse и выбираем объект "взрыв" (мы меняем "выстрел" на "взрыв"). И удаляем deatroy the instanse.
18) Осталось лишь расположить объекты. И получится примерно так.

Вот принципе и все!!! Далее я лишь объясню как ее улучшить. 3.
Все! Игры кончились! Приступаем, теперь мы будем улучшать. Первая цель - строка состояния.
1) Add Script и набираем текст:
{
brush_color = c_black;
pen_color = c_black;
draw_rectangle(argument0,argument1,argument0 + 200,argument1 + 25);
brush_color = make_color(200 - global.health*2,global.health*2,0);
draw_rectangle(argument0,argument1,argument0 + global.health*2, argument1 + 25);
font_color = c_white;
font_size = 12;
font_name = 'Courier';
font_style = fs_bold;
font_align = fa_center;
draw_text(argument0 + 100,argument1 + 5,'Здоровье:' + string(global.health) + '%');
}
Набрали? Ok.
2) Создаем объект без спрайта или с ним не важно.
Теперь Add Event \ Create в вкладке Code \ Execute a piece of code пишем global.health = 100; Далее Add Event \ Draw \ Code \ Execute script и назначаем наш скрипт.
3) Переходим к нашему главному герою: Add Event \ collision "корабль2" \ Code \ Execute a piece of code пишем: if global.health = 0 room_restart() global.health-=25; (25 значит при столкновение с объектом "корабль2" -25%). Во вкладке Object \ Create an instanse of an object ставим "взрыв" и галочку relative.(теперь при столкновение с противником появлялся взрыв и -25% жизни, а если кончилось здоровье то игра перезапускается).
4) Должно получиться что-то вроде этого:

На вашем месте я бы удалил из спрайта "взрыв" все кадры до 7. Так красивей !
Красота, но это еще не все!
5) Наши противники не стреляют! Исправим. Берем противника, Add Event \ Step и в question \ if a dice lands on one значение 40. Теперь делаем новый объект "выстрел2" там ставим все тоже что и в выстреле только направление в другую сторону. Вернемся к противнику в Step \ object \ Create an instanse of an object там выстрел2.
6) Жмем F5! Все должно пройти так он летит и стреляет по тебе но здоровье не отнимается! Будем исправлять ситуацию. При столкновении с выстрелом2 пишем все тоже что и при столкновении с "корабль2" только -5% , хотя кому как нравится.
7) Надо решить проблему управления! Но это для кого как можно мышью, а можно клавиатурой. Я покажу как мышью. Ну для начала удалим предыдущее управление. Теперь Add Event \ Step \ jumb to diven position пишем в x mouse_x , а в y -460. Все теперь в опциях игры отставляем галочку в показе курсора. Там-же можно поставить фоновую картинку и картинку при загрузке, и ярлык для игры. Нажимаем file \ create stand-alone и конвертируем игру. Теперь загружаем!
Категория: Уроки | Добавил: RagnaRock (31.05.2010)
Просмотров: 717 | Комментарии: 1 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024 |