Добавляем спрайт 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
|