SITE LOGO Понедельник, 2024-05-13, 1:43 PM
Приветствую Вас Гость | RSS
Главная страница | Каталог статей | Регистрация | Вход
Меню сайта
Категории каталога
Уроки для GameMaker [4]
Изучаем GameMaker 6.0
Уроки для Photoshop [4]
Изучаем Adobe Photoshop
Уроки Гомера [3]
Все о ТМ
Уроки для 3DS MAX [0]
Изучаем 3D Studio Max
Форма входа
Поиск по каталогу
Друзья сайта
GP TEAM
Статистика
Начало » Статьи » Уроки для GameMaker

Урок 1. Часть2.
Добавляем спрайт s_wall, загружаем из папки с стандартным пакманом, убираем Precize collision checking и Transparent.
Добавляем объект o_wall, ставим спрайт s_wall, галочка solid.
Добавляем объекту o_pacman событие Collision -> o_wall.
Добавляем действие Start moving in a direction выбираем 'стоп' speed = 0.
Добавляем действие Change the sprite, ставим s_pacman_stand, image_speed = 0.5.
Стена готова! Теперь стены можно размещать в уровне!

Далее мы создадим монстров.
Добавляем спрайт s_monster, загружаем из папки с стандартным пакманом monster1.gif, убираем Precize collision checking.
Жмем Edit Sprite, File -> Add from file..., и добавляем всех остальных монстров (monster2.gif, monster3.gif, monster4.gif и monster5.gif).
Добавляем объект o_monster, ставим спрайт s_monster.
Вот события и действия для него:
[Create]
Set the value of a variable - image_single = random(5)
[Step]
If instance is aligned with grid - 32 x 32
Start of a block
If a variable has a value - hspeed - 0
Start of a block
If an expression is true - (floor(random(2)) = 0) and (place_free(x-4,y))
Start moving in a direction - Влево 4
If an expression is true - (floor(random(2)) =1) and (place_free(x+4,y))
Start moving in a direction - Вправо 4
End of a block
Else
Start of a block
If an expression is true - (floor(random(2)) = 0) and (place_free(x,y-4))
Start moving in a direction - Вверх 4
If an expression is true - (floor(random(2)) =1) and (place_free(x,y+4))
Start moving in a direction - Вниз 4
End of a block
End of a block
[Collision - o_wall]
Reverse vertical direction
Reverse horizonal direction
If instance is aligned with grid - 32 x 32
Start of a block
If a variable has a value - hspeed - 0
Start of a block
If an expression is true - (floor(random(2)) = 0) and (place_free(x-4,y))
Start moving in a direction - Влево 4
If an expression is true - (floor(random(2)) =1) and (place_free(x+4,y))
Start moving in a direction - Вправо 4
End of a block
Else
Start of a block
If an expression is true - (floor(random(2)) = 0) and (place_free(x,y-4))
Start moving in a direction - Вверх 4
If an expression is true - (floor(random(2)) =1) and (place_free(x,y+4))
Start moving in a direction - Вниз 4
End of a block
End of a block

Ну вот! Теперь можно смело добавлять монстров в уровень!

Осталось добавить событие столкновения с врагами пакману и количество жизней.
Начнем с жизней.
Есть два способа реализации жизней: с помощью стандартных функций гм и с помощью новой переменной
Второй способ лучше, так как с ним мы сможем реализовать жизни одновременно для двух и более игроков, что пригодится нам в дальнейшем.
Добавим в событие Create объекту o_pacman Set the value of a variable - lifes1 - 2.
Добавим событие столкновения с o_monster.
Добавим действия:
Set the value of a variable - lifes1, -1, галочка relative.
Sleep 500 milliseconds, redraw - false.
Jump to a start position (Self).
Jump to a start position (Object: o_monster).
Change the sprite: s_pacman_stand, image_speed = 0.5.
If a variable has a value: lifes1; 0; smaller than.
Start of a block
Set the value of a variable - score - coins*10.
Display a message: Вы проиграли!
Show the highscore table
Go to a different room: room0
End of a block
И еще добавим событие Step:
Set the value of a variable: room_caption; 'Score: ' + string(coins*10) + '; Lifes: ' + string(lifes1).

Set the window caption info:
Show score: don't show
Show lives: don't show
Show health: don't show

If the number of instances has a value: o_coin, 0
Start of a block
If next room exists
Start of a block
Go to next room
Jump to a position o_pacman.x, o_pacman.y
End of a block
Else
Start of a block
Display a message: Вы прошли всю игру!
Show the highscore table
Go to a different room: room0
End of a block
End of a block

И изменим событие Create o_pacman:
Set the value of a variable - image_speed - 0.5
If a variable has a value: room; room0
Start of a block
Set the value of a variable - lifes1 - 2
Set the value of a variable - coins - 0
End of a block
Else
Start of a block
Destroy th instance
End of a block

Теперь игра готова! Можно добавить звуки и музыку:
Add -> Add Sound
Назовем snd_coin
Load Sound -> GameMaker -> Sounds -> click.wav
Объекту o_pacman добавим в событие столкновения с o_coin Play sound - snd_coin, loop - false.
Таким же образом добаляем музыку, только ставим Background music, событие проигрывания в Create, looping - true.
Советую в первые игры добавлять midi музыку - игра будет значительно меньше занимать места.
mp3 / ogg / wav лучше добавлять в серьезные проекты.
Чтобы добавить уровни, просто добавляем новые комнаты и размещаем их в нужном порядке. Главное чтобы room0 была первой!

Теперь все! Игра полностью готова!
Вот то что получилось у меня:
pacman v0.99

Категория: Уроки для GameMaker | Добавил: korvinius (2006-07-27)
Просмотров: 1491 | Комментарии: 3 | Рейтинг: 0.0

Всего комментариев: 1
1 сергей  
0
спасибо за материал... написано конечно хуже, чем в первом уроке... есть опечатки...
не могли бы вы мне помочь у меня pacman не появляется во втором уровне вроде бы все сделал так как написано... не могу разобраться в чем дело

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