Вопрос - Ответ (Game Maker)
| |
Уайльд | Дата: Воскресенье, 26 Июня 2011, 12:50 | Сообщение # 1721 |
участник
Сейчас нет на сайте
| я с телефона сижу в инете. телефон не скачивает файлы формата, который не поддерживается им. буду благодарна, если кто-нибудь напишет код Сюда. Добавлено (26.06.2011, 12:47) --------------------------------------------- я с телефона сижу в инете. телефон не скачивает файлы формата, который не поддерживается им. буду благодарна, если кто-нибудь напишет код Сюда. Добавлено (26.06.2011, 12:47) --------------------------------------------- я с телефона сижу в инете. телефон не скачивает файлы формата, который не поддерживается им. буду благодарна, если кто-нибудь напишет код Сюда. Добавлено (26.06.2011, 12:50) --------------------------------------------- может создать Врагов и каждому задать путь, расчитывая их местонахождение?
|
|
| |
LunarPixel | Дата: Воскресенье, 26 Июня 2011, 13:04 | Сообщение # 1722 |
старожил
Сейчас нет на сайте
| kashey, тут нужно писать алгоритм поиска пути, причем с ограничением на 4 направления. Любой пакманоподоный НЕ подойдет, в пакмане система другая. Загуглил, примеров с поиском пути есть много, но и кода в них не мало. Если будет время, сегодня сам напишу пример.Добавлено (26.06.2011, 13:04) --------------------------------------------- Уайльд, можно сделать так:
Создай пустой путь Path0.
Создай объект object0 и в событии CREATE напиши:
Code s=mp_grid_create(0,0,room_width/16,room_height/16,16,16) mp_grid_add_instances(s,obj_wall,0)
Где obj_wall - препятствия.
А у врага в событии STEP: Code if mp_grid_path(object0.s,Path0,x,y,obj_hero.x,obj_hero.y,0) path_start(Path0,4,0,0)
Враг будет более менее нормально ходить, только в 4 направления. Но иногда (на поворотах и при приближении к герою), будет немного двигаться наискосок.
|
|
| |
kashey | Дата: Воскресенье, 26 Июня 2011, 13:21 | Сообщение # 1723 |
постоянный участник
Сейчас нет на сайте
| if point_direction()<45 { if !place_free(x+1,y) x+=1 else {if !place_free(x,y+1) y+=1} }
Ну и так далее в зависимости от того, насколько умным должен быть твой робот. Количество условий при таком методе может увеличиться на несколько порядков, так что лучше записать в скрипт.
Но мне кажется проще было бы сделать это на сетке mp_grid. Почему то ее совсем не используют, а зря. Работает несколько медленнее, но дает практически стопроцентный результат.Добавлено (26.06.2011, 13:16) ---------------------------------------------
Quote (LunarPixel) Враг будет более менее нормально ходить, только в 4 направления. Но иногда (на поворотах и при приближении к герою), будет немного двигаться наискосок. Это лечится обьектом точкой, до которого просчитывается путь выравненным по сетке.Добавлено (26.06.2011, 13:20) ---------------------------------------------
Quote (LunarPixel) Любой пакманоподоный НЕ подойдет, в пакмане система другая. Прямолинейное движение оно везде одинаково, почему не подойдет?Добавлено (26.06.2011, 13:21) ---------------------------------------------
Quote (LunarPixel) Где obj_wall - препятствия. А если использовать solid? Или тут этот фокус не пройдет?
|
|
| |
LunarPixel | Дата: Воскресенье, 26 Июня 2011, 13:38 | Сообщение # 1724 |
старожил
Сейчас нет на сайте
| Quote (kashey) А если использовать solid? Или тут этот фокус не пройдет? Нет, он на твердость не будет реагировать, он на объекты не смотрит, он просчитывает движение только относительно сетки. Потому надо делать запрещенные ячейки.
Quote (kashey) Прямолинейное движение оно везде одинаково, почему не подойдет? Потому что в пакмане все намного проще, там враг двигается случайным образом.
Quote (kashey) Это лечится обьектом точкой, до которого просчитывается путь выравненным по сетке. Путь в любом случае просчитывается до одной конкретной точки. Но, да, если по сетки выровнять, то всё нормально должно быть. Просто давно не использовал эту функцию.
Сообщение отредактировал LunarPixel - Воскресенье, 26 Июня 2011, 14:07 |
|
| |
Уайльд | Дата: Воскресенье, 26 Июня 2011, 15:23 | Сообщение # 1725 |
участник
Сейчас нет на сайте
| Спасибо =) работает =) Добавлено (26.06.2011, 15:23) --------------------------------------------- Но теперь у него же не работает здоровье... ну, ладно, обойдемся без ограничений...
|
|
| |
kashey | Дата: Воскресенье, 26 Июня 2011, 15:34 | Сообщение # 1726 |
постоянный участник
Сейчас нет на сайте
| Quote (LunarPixel) Потому что в пакмане все намного проще, там враг двигается случайным образом. Видимо ты давно не играл в пакмана Quote (LunarPixel) Нет, он на твердость не будет реагировать Точно, помнится мне, я так и не смог решить головоломку с запрещенными ячейками. У меня движущиеся обьекты запрещали ячейки на которых находились, чтобы другие не просчитывали путь сквозь них. Но затея провалилась, потому как сами монстры, из-за запрещенной ячейки на которой стояли, тоже отказывались двигаться Добавлено (26.06.2011, 15:34) ---------------------------------------------
Quote (LunarPixel) Путь в любом случае просчитывается до одной конкретной точки. Конкретную точку по сетке сложно выровнять, если это не обьект. Попробуй выровнять по сетке координаты мыши, и ты поймешь о чем я
|
|
| |
Уайльд | Дата: Воскресенье, 26 Июня 2011, 15:47 | Сообщение # 1727 |
участник
Сейчас нет на сайте
| Без ограничений отстойно выглядит -_-
|
|
| |
LunarPixel | Дата: Воскресенье, 26 Июня 2011, 15:52 | Сообщение # 1728 |
старожил
Сейчас нет на сайте
| Quote (kashey) Видимо ты давно не играл в пакмана Да, в пакмана давно не играл. Потому только что скачал его на денди и переиграл. Ну и что же?! Двигаются враги случайным образом, а не по направлению к герою. Меняют направление они так же случайным образом, в случайный момент времени, или же при столкновении со стеной.
Quote (kashey) Конкретную точку по сетке сложно выровнять, если это не обьект. Я понял о чем ты. Просто зачем создавать отдельно точку, когда можно расположить точку отсчета у спрайта так как нужно. Добавлено (26.06.2011, 15:52) --------------------------------------------- Уайльд, про какие ограничения ты говоришь? Quote (Уайльд) Но теперь у него же не работает здоровье Поясни
|
|
| |
kashey | Дата: Воскресенье, 26 Июня 2011, 15:59 | Сообщение # 1729 |
постоянный участник
Сейчас нет на сайте
| Quote (LunarPixel) Да, в пакмана давно не играл. Потому только что скачал его на денди и переиграл. Ну и что же?! Двигаются враги случайным образом, а не по направлению к герою. Меняют направление они так же случайным образом, в случайный момент времени, или же при столкновении со стеной. Видимо мы играли в разных пакманов, потому как тот который попался мне ведет себя иначе. Враги да, двигаются случайным образом, но только до тех пор пока по близости нет пакмана. При определенном приближении враги начинают двигаться по направлению к пакману. Игра в догонялки в чистом виде. Уж не знаю, может на твоем роме схалтурили
Quote (LunarPixel) Я понял о чем ты. Просто зачем создавать отдельно точку, когда можно расположить точку отсчета у спрайта так как нужно. А потому, что спрайт не в каждый момент времени выровнен по сетке, и если в такой момент просчитать путь до него, то получится как раз скос на последнем отрезке пути.
|
|
| |
Уайльд | Дата: Воскресенье, 26 Июня 2011, 16:04 | Сообщение # 1730 |
участник
Сейчас нет на сайте
| чтоб не двигался по диагонали, а то гг по сетке двигается, нехорошо будет если у врага будет такое приемущество. о здоровье: в create написала hp=100, при столкновении с o_pulya hp-=25 или hp=-25, не помню точно (сейчас не за компом). и вот они столкнулись раз...два...три...четыре... а враг не подох.
|
|
| |
LunarPixel | Дата: Воскресенье, 26 Июня 2011, 16:07 | Сообщение # 1731 |
старожил
Сейчас нет на сайте
| Quote (kashey) А потому, что спрайт не в каждый момент времени выровнен по сетке Тут уже от игры зависит. Лично я если использую сетку, то у меня всегда по сетке все выровнено.
Quote (kashey) Видимо мы играли в разных пакманов Ну не знаю. Специально бежал за врагом почти вплотную, он на меня не реагировал. Обычный ром скачал, насколько я помню всегда так было. Недавно Google делал на своей странице игру в пакмана, там так же было. Так что может это ты в какого то особенного играл. Ну да ладно, какая разница.
Quote (Уайльд) чтоб не двигался по диагонали Если у тебя не выровнен он постоянно по сетке, то можешь сделать как kashey говорит. Создай объект в один пиксель и относительно героя выравнивай его по сетке и пусть враг за этим пикселем гоняется.
|
|
| |
kashey | Дата: Воскресенье, 26 Июня 2011, 16:09 | Сообщение # 1732 |
постоянный участник
Сейчас нет на сайте
| Все пишем в обьекте который должен подохнуть.
create event: hp=100
collision event: hp-=25 if hp<=0 instance_destroy()Добавлено (26.06.2011, 16:09) ---------------------------------------------
Quote (LunarPixel) Тут уже от игры зависит. Лично я если использую сетку, то у меня всегда по сетке все выровнено. Даже в момент движения? Quote (LunarPixel) Если у тебя не выровнен он постоянно по сетке, то можешь сделать как kashey говорит. Создай объект в один пиксель и относительно героя выравнивай его по сетке и пусть враг за этим пикселем гоняется. Не нужно обьекта в один пиксель. Нужны только координаты обьекта, с выравниванием по сетке. Он может быть и 600 пикселей в окружности.
|
|
| |
LunarPixel | Дата: Воскресенье, 26 Июня 2011, 16:14 | Сообщение # 1733 |
старожил
Сейчас нет на сайте
| Quote (kashey) Даже в момент движения? Да. Просто единственное для чего я это использовал была пошаговая игра, в которой герой просто двигался по сетке из одной клетки в другую.
Quote (kashey) Не нужно обьекта в один пиксель. Чтоб меньше весил А вообще да, тупанул лучше, думаю, сделать объект равный по размеру одной клетке в сетке.
Всё, итак мозги плавятся от работы, я ушел.
Сообщение отредактировал LunarPixel - Воскресенье, 26 Июня 2011, 16:17 |
|
| |
Уайльд | Дата: Воскресенье, 26 Июня 2011, 16:19 | Сообщение # 1734 |
участник
Сейчас нет на сайте
| kashey точно! совсем из головы вылетело *_*
|
|
| |
fack3637363 | Дата: Понедельник, 27 Июня 2011, 17:45 | Сообщение # 1735 |
постоянный участник
Сейчас нет на сайте
| Как сделать что-бы при нажатии на спрайт (именно на спрайт - можно ли?) менялась переменная (без разницы какая)? Не хочу делать чтобы создавался обьект, и на него нажимать, а нужно именно на спрайт нажатие, возможно ли так реализовать в гм?
|
|
| |
LunarPixel | Дата: Понедельник, 27 Июня 2011, 18:14 | Сообщение # 1736 |
старожил
Сейчас нет на сайте
| fack3637363, хм.. думаю нажать на спрайт, не делая из него объект, нельзя. Как вариант можно проверять находится ли мышка в области спрайта и нажата ли кнопка мыши.
Что то вроде этого: Создаем спрайт sprite0 размером 32х32, ставим точку отсчета по центру. Создаем объект и в нем в событии Draw пишем:
Code draw_sprite(sprite0,0,100,100)
if point_distance(mouse_x,mouse_y,100,100)<16 and mouse_check_button(mb_left) {show_message('click')} Добавлено (27.06.2011, 18:14) --------------------------------------------- Ну или можно создать один объект и, при создании объект, ставить ему тот или иной спрайт кодом. А потом, в зависимости от спрайта, выполнять по нажатию мыши те или иные действия. Так можно все через один объект сделать.
|
|
| |
kashey | Дата: Понедельник, 27 Июня 2011, 22:48 | Сообщение # 1737 |
постоянный участник
Сейчас нет на сайте
| Quote (fack3637363) Как сделать что-бы при нажатии на спрайт (именно на спрайт - можно ли?) менялась переменная (без разницы какая)? Не хочу делать чтобы создавался обьект, и на него нажимать, а нужно именно на спрайт нажатие, возможно ли так реализовать в гм? На обьект сам по себе нажать невозможно. Это контейнер для того, что ты в него запихиваешь. То есть нажатие всегда происходит по маске спрайта или области заданной в событии нажатия. Без создания обьекта, в котором заданы параметры для нажатия невозможно... эмм... нажать на что либо. Вопрос не имеет смысла или нужна более точная формулировка.
|
|
| |
IIIypuk | Дата: Понедельник, 27 Июня 2011, 23:20 | Сообщение # 1738 |
-- ArchLinux Fan --
Сейчас нет на сайте
| Существует ли сrack для Game Maker 8.1? + обязательно.
Одинокий юзер
|
|
| |
NSakenov | Дата: Вторник, 28 Июня 2011, 12:28 | Сообщение # 1739 |
Игродел от Глоба
Сейчас нет на сайте
| IIIypuk, да. Могу скинуть в ЛС.
|
|
| |
IIIypuk | Дата: Вторник, 28 Июня 2011, 14:55 | Сообщение # 1740 |
-- ArchLinux Fan --
Сейчас нет на сайте
| NSakenov, Спасибо.
Одинокий юзер
|
|
| |
|