Советы по GameMaker
Автор © 09.08.2003 "Scorpion"
Как заменить спрайт при его движении по установленному пути.Допустим, у вас есть спрайт, состоящий из 36 изображений (0-35).То есть каждый следующий - подизображение на 10 градусов в сторону. Обычно, в событии рисования, в действии рисования спрайта в поле -subimage- мы пишем direction/(360/image_number). То бишь direction/10. А ведь в пути направление обьекта - дробное число! Решаем задачку. В событии рисования(или шага) ставим set the value of variable, direction=(round(round(direction)/10))*10. Объясняю. Направление = (округленное(округлённое(направление)деленое на 10)) множеное на 10 Объясняю еще. Дробное направление в пути округляем. (пример 268.34 = 268) Затем делим его на десять (268/10=26.8) затем округляем (26.8=27) затем множим на десять (27*10=270) Ура! Получили что надо! Теперь: -subimage- direction(270)/10 =27 То есть 27 изображение спрайта, где обьект смотрит вниз, что и требовалось. Как быстро сделать спрайт человека, смотрящего (вид сверху) в разные стороны (18, 36, 72 стороны)Создаем один спрайтик с одним изображением человека. Кликаем Edit spriteВыбираем Animation/Rotation Sequence/ и далее против часовой стрелки. затем, в number of frames пишем кол-во подизображений (человеков в разные стороны) и градусы пишем 360. (если он ворочается во все стороны) Далее ОК и... О ЧУДО! произошло! у вас нужное количество подизображений. Затем нужно установить (по идее) первое изображение (номер 0) где чувак смотрит по direction=0, чтобы в событии рисования в subimage писать direction/10, чувак должен смотреть вправо. Можно воспользоваться (если не смотрит) Images/Cycle Left images/cycle Right или клавишами shift+ctrl+(L или R) Вот и готовый спрайт. Как создать автомат с питьевой водой (игровой).Для начала делаем два спрайта - сам автомат и банка. Затем эти обьекты.Принцип работы: герой сталкивается с автоматом, и при удаче вылетает банка на определенное растояние от автомата. Повторяется всё через определенное время. В событии CREATE героя вводим переменную (true/false), например no_kola, для отслеживания, идет ли уже игра. Итак, no_kola=true (т.е. игра не идёт) В событии столкновения: 1) Герой останавливается. 2) Если no_kola=false (игра идёт) 3) Exit this event 4) With chance 1 out (число, чем больше, тем меньше шансов, у меня 4) 5) Создать обьект банка. Вот здесь подробнее. Всё зависит от того, в какую сторону будет лететь банка. Applies to: Other Если влево, то x=-(random(20)), если вправо, то с + Y=random(20)-10 Всё -Relative 6) Затем если надо играем звуки. 7) Cтавим no_kola=true(игра идёт). 8) Потом ставим таймер, например на 50, а в событии этого таймера пишем no_kola=true(нет игры). Затем в событии cREATE банки проигрываем победный звук (мол, выиграл) и в событии столкновения героя с банкой уничтожаем её и играем звук выпивания банки. Всё. Как создать всё больше разгорающийся огонь. (Пожар)Спрайт огня делаем, затем обьект. Делаем звук.В Create пишем: 1) Если звук огня не играет 2) Играем звук огня 3) Ставим переменную fire=false, для контроля распространения. В Step пишем: 1) Если fire=false 2) Alarm 0 to (число, скорость распростронения, у меня 300) 3) Ставим fire=true В Alarm 0 пишем: 1) Если обьект fire в позиции (x,y = random(100)-50, Relative) 2) Старт блока 3) fire=false 4) Exit 5) Конец блока 6) create object fire (x,y =random(100)-50, relative) 7) Alarm 0 = 300 8) Fire=false Принцип действия. Переменная fire следит, нужно ли пытаться создать огонь через определенное время. А когда она равна false Alarm снова установиться на попытку создать огонь. Если позиция, где задумается поставить огонь уже занята огнем, fire станет false и Alarm0 снова заведётся. При этом гореть будет всё - и стены, и люди, и предметы. При выходе огня из комнаты лучше его дестроить. Вот и всё. Создание вооруженного персонажа (в том числе и до зубов).В данном совете ты найдешь принцип, а сам уже и сделаешь коды.ПРОСТО ВООРУЖЕННЫЙПод этим можно понимать пару видов оружия.Стреляет одинарно, малый урон. (Пистолет) Стреляет многократно, малый урон. (Узи, ингрем) Стреляет одинарно, большой урон. (Ружье) Стреляет одинарно, максимальный урон. (Базука) В данном случае, подразумевается, что у игрока всегда будут эти 4 оружия, даже если нет патронов (огонь без патронов - звук определенный). Чтобы стрелять, достаточно будет найти патроны и всё. Возможна также стрельба без перезарядки. К примеру я, в игре МАКС ПЭЙН, к-рую делаю сейчас, использую простое вооружение. Пистолет и узи будут отличеться только временем между вылетом пуль. (урон напр 10) Для них нужен один обьект пули. Ружье стреляет медленнее пистолета. (но урон напр, в 3 раза больше) Нужен другой обьект, желательно спрайт больше. Базука стреляет совсем медленно.(а тут урон напр, при попадании - смерть) А тут нужно создать рокету маленькую. При столкновении с кем/чем нибудь взрывается, и обьект ВЗРЫВ наносит урон(напр, 10). Чтобы вообще было всегда чем стрелять, можно сделать пули у пистолета бесконечными. А как же выбирать оружие? Я так решил эту задачу. Рядом с героем я рисую его здоровье, а выше пишу название оружия и рядом кол-во патронов. Для переключения можно использовать цифры (напр, 1234). Нужно ввести переменные (true/false), например: use_pistol, use_usi, use_rifle, use_rocket И при переключении цифр все переменые ставятся как false, а нужная - true. И в событии рисования : если такая-то переменая = true, то писать такое-то оружие. ВООРУЖЕННЫЙ ДО ЗУБОВВ данном случае у игрока нет всех этих оружий, и при подбирании патронов от того оружия, которого у него нет, стрелять будет нельзя. Бесконечными являются камни, нож и бензопила, бита. Стрелять нужно будет с перезарядкой.1 Используется бесконечно на близком расстоянии. (Нож, бита, бензопила) 2 Ставится рядом с героем. (Граната, мина, капкан.) 3 Кидается на определенное расстояние от героя. (Камни, граната, коктейль молотова) 4 Стреляет одинарно, малый урон. (Пистолет, арбалет) 5 Стреляет многократно, малый урон. (Узи, ингрем) 6 Стреляет одинарно, большой урон. (Ружье, дробовик) 7 Стреляет многократно, большой урон. (Калашников, тяжелый пулемет) 8 Стреляет одинарно, максимальный урон. (Базука, гранатомет) Защита - Бронежилеты, шлемы, негорящие костюмы. 1 С ножом и пилой наверно понятно. У пилы больший урон. А бита используется на немного дальшем расстоянии, но урон как у ножа. 2 Гранату можно также ложить рядом с собой, через нек-рое время она рванет. Мина ставится рядом, урон также как и от гранаты, только пока на нее не наступят, не рванет. Капкан как и мина, но с меньшим уроном. 3 Камни можно сделать бесконечными и приносящими ничтожный урон. Граната кидается, в зависимости от того, долго ли будешь держать клавишу (Powershoot) Коктейль молотова урона не наносит, а вокруг себя создает огонь, который через нек-рое время исчезает. А вот огонь и наносит урон, (напр, 2) И если столкнется с противником то будет нанем, даже если тот пойдет, и пока не иссякнет огонь или не сдохнет враг. 4 Пистолет разобрали, арбалет - меньший урон 5 Разобрали 6 При выстреле из дробовика создается множества сплоченых пуль, по отдельности наносящих малый урон. (напр, 3) Но так как их много, то урон будет большой. 7 Как известно, калаш имеет огробный убой, как и пулемет. Урон поменьше, чем у 6, но стреляет чуть медленнее 5. 8 Гранатомет будет стрелять гранатами, но не Powershoot. А с базукой вот что: При разрыве ракеты будет взрыв, да еще и останется гореть огонь, как из Молотова. И есть еще одна категория - Огнемет. Будет стрелять на недалекое растояние, но огонь как у Молотова, будет приносить огромный урон, оставаясьна враге. А Защита? Пожалуйста! Броня - дополнительные 100 health-ов, при выстреле по ней нет крови. Шлем поможет защитить только голову, следовательно это случайная защита, где-то 1 к 5. А негорючий костюм - вводим переменную, havekostum=true, и при столкновении с огнем, огонь приставть к телу не будет, а будет уменьшать только силу костюма. Вот и всё! Можно скомбинировать и простой, и "до зубов", и получить довольно хорошее вооружение. Но 2-ой способ нужен полностью явно для отлллличных игр. Поке Спасибо,* SpleaN * | |
| |
Просмотров: 1845 | |
Всего комментариев: 0 | |