УВ последнее время многие стремятся создать свою TDS, и чаще всего для
этих целей выбирают Game Maker. Я решил посвятить свою очередную
статью их созданию (часть совпадает с материалом о создании RPG).
Что должно быть в каждой ТДС? Бегающий туда-сюда герой, увешанный
оружием, толпа монстров, с которой сражается маленький беззащитный
(почти) человек. Но пока проопишем необходимые переменные.
oruzhie='Пистолет' (начальное оружие) pistolet_patron=100 (какое
оружие без патронов) blaster_patron=0 s_blasterom=false (нет
бластера!) Оно обычно такое: поворот с помощью мышки, бегаем на
стрелочках/WASD. Чтобы герой мог ходить по диагонали, бег сделаем с
помощью прыжков в определенные координаты. Вот так: if
keyboard_check(vk_right) {x+=4} if keyboard_check(vk_left) {x-=4}
if keyboard_check(vk_up) {y-=4} if keyboard_check(vk_down) {y+=4}
Поворачивание за мышкой легко сделать с помощью команды, определяющей
направление по отношению к координатам мышки:
image_angle=point_direction(hero.x,hero.y,mouse_x,mouse_y) Чтобы
все было красиво, необходимо центрировать спрайт героя! Все,
движение героя есть. Радуемся и переходим к стрельбе по монстрам. В
Create героя поместите: babah=15 (это необходимо для перезарядки)
В Step героя: babah-=1 Создайте объект пули (еще нарисуйте,
естественно, саму пулю). В событии глобального нажатия левой кнопки
мышки (Global Left Button) пропишите создание пули в координатах
героя: if babah<=0 {if oruzhie='Пистолет' and
pistolet_patron>0 or oruzhie='Бластер' and blaster_patron>0
{instance_create(x,y,pulya) if oruzhie='Пистолет' {pistolet_patron-=1
babah=15} if oruzhie='Бластер' {blaster_patron-=1 babah=30}} } А у
пули в Create: move_towards_point(mouse_x,mouse_y,25) Теперь
получилось, что герой стреляет. Не из дула, а из своей середины - но,
благодаря высокой скорости пули, это незаметно. Стрельба есть, но
врагов нет. Непорядок! Создайте объект какого-нибудь чудовища и
перетащите ему в Step кнопку Step Towards Point (координаты -
hero.x,hero.y. Также выберите solid и включите solid самому монстру -
чтобы обходил препятствия и таких же, как он сам). Теперь монстру в
Create: heal=100 (это его здоровье) В столкновении героя с
монстром напишите health-=1 А в столкновении монстра с пулей:
if hero.oruzhie='Пистолет'heal-=20 (можно больше, для скоростного и
кровавого геймплея ) if hero.oruzhie='Бластер'heal-=60 В
Step монстра: if heal<=0 {instance_change(trup,1)} И
создайте объект трупа врага и спрайт этого трупа. Сам герой умереть
тоже должен, пишем ему в Step что-то подобное: if health<=0
{game_end() show_message('Ты сдох, чувак!' )} Основная часть
позади! Но надо еще сделать постоянное нападение врагов и смену оружия.
Сначала враги. Посмотрите на своей игровой карте точки, из которых
могли бы выходить монстры (желательно за пределами карты и штуки три),
создаем объект без спрайта и пишем ему в Create Alarm[0]=30
(можно меньше) А в событии Alarm 0:
instance_create(координаты вашей первой точки,monstr)
instance_create(координаты вашей второй точки,monstr)
instance_create(координаты вашей третьей точки,monstr) alarm[0]=30
Теперь монстры постоянно идут из тех точек. Дальше оружие.
Создаем объект blaster. В столкновении героя с бластером поместим:
blaster_patron+=20 (патроны нашли) s_blasterom=true (у нас он есть)
oruzhie='Бластер' (автоматически оружие меняется на бластер, для
удобства) Создаем объект пистолета и пишем в столкновении героя с
ним примерно так: pistolet_patron+=40 И, наконец, смена
оружия. У героя в нажатии цифры 1: oruzhie='Пистолет' А в
нажатии 2: if s_blasterom=true {oruzhie='Бластер'} Вот и
все - простенькая TDS создана! Выкладываю также исходник этого
примера - http://depositfiles.com/ru/files/8oy6xpns1
|