Советы по 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 *
Категория: Цитаты | Добавил: Olegator (13.08.2008)
Просмотров: 1806 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]