Среда, 09 Октября 2024, 01:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (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 направления. Любой пакманоподоный НЕ подойдет, в пакмане система другая. smile
Загуглил, примеров с поиском пути есть много, но и кода в них не мало. smile
Если будет время, сегодня сам напишу пример.

Добавлено (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)
Потому что в пакмане все намного проще, там враг двигается случайным образом.

Видимо ты давно не играл в пакмана smile
Quote (LunarPixel)
Нет, он на твердость не будет реагировать

Точно, помнится мне, я так и не смог решить головоломку с запрещенными ячейками. У меня движущиеся обьекты запрещали ячейки на которых находились, чтобы другие не просчитывали путь сквозь них. Но затея провалилась, потому как сами монстры, из-за запрещенной ячейки на которой стояли, тоже отказывались двигаться biggrin

Добавлено (26.06.2011, 15:34)
---------------------------------------------

Quote (LunarPixel)
Путь в любом случае просчитывается до одной конкретной точки.

Конкретную точку по сетке сложно выровнять, если это не обьект. Попробуй выровнять по сетке координаты мыши, и ты поймешь о чем я smile
УайльдДата: Воскресенье, 26 Июня 2011, 15:47 | Сообщение # 1727
участник
Сейчас нет на сайте
Без ограничений отстойно выглядит -_-

LunarPixelДата: Воскресенье, 26 Июня 2011, 15:52 | Сообщение # 1728
старожил
Сейчас нет на сайте
Quote (kashey)
Видимо ты давно не играл в пакмана

Да, в пакмана давно не играл. Потому только что скачал его на денди и переиграл. Ну и что же?! Двигаются враги случайным образом, а не по направлению к герою. Меняют направление они так же случайным образом, в случайный момент времени, или же при столкновении со стеной. smile

Quote (kashey)
Конкретную точку по сетке сложно выровнять, если это не обьект.

Я понял о чем ты. Просто зачем создавать отдельно точку, когда можно расположить точку отсчета у спрайта так как нужно. smile

Добавлено (26.06.2011, 15:52)
---------------------------------------------
Уайльд, про какие ограничения ты говоришь? smile

Quote (Уайльд)
Но теперь у него же не работает здоровье

Поясни smile


kasheyДата: Воскресенье, 26 Июня 2011, 15:59 | Сообщение # 1729
постоянный участник
Сейчас нет на сайте
Quote (LunarPixel)
Да, в пакмана давно не играл. Потому только что скачал его на денди и переиграл. Ну и что же?! Двигаются враги случайным образом, а не по направлению к герою. Меняют направление они так же случайным образом, в случайный момент времени, или же при столкновении со стеной.

Видимо мы играли в разных пакманов, потому как тот который попался мне ведет себя иначе. Враги да, двигаются случайным образом, но только до тех пор пока по близости нет пакмана. При определенном приближении враги начинают двигаться по направлению к пакману. Игра в догонялки в чистом виде. Уж не знаю, может на твоем роме схалтурили smile

Quote (LunarPixel)
Я понял о чем ты. Просто зачем создавать отдельно точку, когда можно расположить точку отсчета у спрайта так как нужно.

А потому, что спрайт не в каждый момент времени выровнен по сетке, и если в такой момент просчитать путь до него, то получится как раз скос на последнем отрезке пути.
УайльдДата: Воскресенье, 26 Июня 2011, 16:04 | Сообщение # 1730
участник
Сейчас нет на сайте
чтоб не двигался по диагонали, а то гг по сетке двигается, нехорошо будет если у врага будет такое приемущество. о здоровье: в create написала hp=100, при столкновении с o_pulya hp-=25 или hp=-25, не помню точно (сейчас не за компом). и вот они столкнулись раз...два...три...четыре... а враг не подох.

LunarPixelДата: Воскресенье, 26 Июня 2011, 16:07 | Сообщение # 1731
старожил
Сейчас нет на сайте
Quote (kashey)
А потому, что спрайт не в каждый момент времени выровнен по сетке

Тут уже от игры зависит. Лично я если использую сетку, то у меня всегда по сетке все выровнено. smile

Quote (kashey)
Видимо мы играли в разных пакманов

Ну не знаю. Специально бежал за врагом почти вплотную, он на меня не реагировал. Обычный ром скачал, насколько я помню всегда так было. Недавно Google делал на своей странице игру в пакмана, там так же было. Так что может это ты в какого то особенного играл. Ну да ладно, какая разница. smile

Quote (Уайльд)
чтоб не двигался по диагонали

Если у тебя не выровнен он постоянно по сетке, то можешь сделать как kashey говорит. Создай объект в один пиксель и относительно героя выравнивай его по сетке и пусть враг за этим пикселем гоняется. smile


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)
Тут уже от игры зависит. Лично я если использую сетку, то у меня всегда по сетке все выровнено.

Даже в момент движения? biggrin
Quote (LunarPixel)
Если у тебя не выровнен он постоянно по сетке, то можешь сделать как kashey говорит. Создай объект в один пиксель и относительно героя выравнивай его по сетке и пусть враг за этим пикселем гоняется.

Не нужно обьекта в один пиксель. Нужны только координаты обьекта, с выравниванием по сетке. Он может быть и 600 пикселей в окружности.
LunarPixelДата: Воскресенье, 26 Июня 2011, 16:14 | Сообщение # 1733
старожил
Сейчас нет на сайте
Quote (kashey)
Даже в момент движения?

Да. Просто единственное для чего я это использовал была пошаговая игра, в которой герой просто двигался по сетке из одной клетки в другую. biggrin

Quote (kashey)
Не нужно обьекта в один пиксель.

Чтоб меньше весил biggrin
А вообще да, тупанул biggrin лучше, думаю, сделать объект равный по размеру одной клетке в сетке. smile

Всё, итак мозги плавятся от работы, я ушел. biggrin




Сообщение отредактировал LunarPixel - Воскресенье, 26 Июня 2011, 16:17
УайльдДата: Воскресенье, 26 Июня 2011, 16:19 | Сообщение # 1734
участник
Сейчас нет на сайте
kashey точно! совсем из головы вылетело *_*

fack3637363Дата: Понедельник, 27 Июня 2011, 17:45 | Сообщение # 1735
постоянный участник
Сейчас нет на сайте
Как сделать что-бы при нажатии на спрайт (именно на спрайт - можно ли?) менялась переменная (без разницы какая)?
Не хочу делать чтобы создавался обьект, и на него нажимать, а нужно именно на спрайт нажатие, возможно ли так реализовать в гм?
LunarPixelДата: Понедельник, 27 Июня 2011, 18:14 | Сообщение # 1736
старожил
Сейчас нет на сайте
fack3637363, хм.. думаю нажать на спрайт, не делая из него объект, нельзя.
Как вариант можно проверять находится ли мышка в области спрайта и нажата ли кнопка мыши. smile

Что то вроде этого:
Создаем спрайт 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)
---------------------------------------------
Ну или можно создать один объект и, при создании объект, ставить ему тот или иной спрайт кодом. А потом, в зависимости от спрайта, выполнять по нажатию мыши те или иные действия. Так можно все через один объект сделать. smile


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, Спасибо.

Одинокий юзер
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг