[GMS] Движение по сетке (квадрат)
|
|
Veliky_Virus | Дата: Суббота, 07 Ноября 2015, 09:15 | Сообщение # 1 |
ДьявоЛ
Сейчас нет на сайте
| Всем доброго времени суток!
Возник вопрос касающийся движения персонажа. И так что же я хотел бы сделать? 1. Сетку размерами 20х20 (в дальнейшем же будет ходьба ровно на клетку сетки); 2. При нажатии в любое место (собственно это простое) появлялся объект. (для понимания моего вопроса); 3. Персонаж при появлении этого объекта, начинает движение к нему. При этом он ходит только на 4 стороны (влево, вправо, верх, вниз) без каких либо отклонений, с соответственным поиском пути, и ровно по сетке!
Постоянное движение я сделал, и с поиском пути, вроде всё хорошо, да только я сделал это через Patch. Нужно чтобы персонаж менял своё направление, а не доходил до конца, и только потом можно поменять:)
Заранее благодарен за помощь
Сообщение отредактировал Veliky_Virus - Суббота, 07 Ноября 2015, 09:56 |
|
| |
Quad69 | Дата: Суббота, 07 Ноября 2015, 11:24 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| В Step.
Код var path=path_add(); if !mp_grid_path(cells,path,x,y,ibj_player.x,obj_player.y,false) {path_end();exit;} path_start(path,1,0,false)
В Create должна быть создана сетка cells!
|
|
| |
Veliky_Virus | Дата: Суббота, 07 Ноября 2015, 13:59 | Сообщение # 3 |
ДьявоЛ
Сейчас нет на сайте
| maksim1221232, если честно, то я не понял Моя вина
|
|
| |
Quad69 | Дата: Суббота, 07 Ноября 2015, 15:06 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| В объекте которому нужно двигаться создаёшь в Create сетку. Create:
Код cells=mp_grid_create(0,0,room_width,room_height,20,20)//Создаёт сетку на всю комнату. Ширина и высота ячейки 20 20 mp_grid_add_instances(cells,obj_wall,0)//Добавляем в нашу сетку стены.
Потом в Step вставляешь код:
Код var path=path_add();//Добавляем путь. if !mp_grid_path(cells,path,x,y,obj_player.x,obj_player.y,false) {path_end();exit;}//добавляем путь от точки x/y до точки obj_player.x/y. false - Можно ли двигаться по диагонали. Функция возвращает отрицательное число если путь не найден. path_start(path,1,0,false)//Начинаем двигаться по пути...
Как то так. Можешь добавить дополнительные условия, типо instance_exists и т.д.
|
|
| |
Luxorix | Дата: Воскресенье, 08 Ноября 2015, 09:12 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Veliky_Virus, ты хочешь вот так сделать? http://luxorixgames.com/game/
Цитата Veliky_Virus ( ) Нужно чтобы персонаж менял своё направление, а не доходил до конца, и только потом можно поменять:) Это фраза мой мозг плавит? Что ты хочешь сказать?
LUXORIX GAMES
|
|
| |
Veliky_Virus | Дата: Воскресенье, 08 Ноября 2015, 11:59 | Сообщение # 6 |
ДьявоЛ
Сейчас нет на сайте
| Luxorix, нет, это у меня вышло как раз:) Но как сделать чтобы я мог в любой момент поменять направление героя?
|
|
| |
Luxorix | Дата: Воскресенье, 08 Ноября 2015, 20:14 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| Veliky_Virus, в теории ты должен 1) Остановить патч 2) Довести героя до центра ближайшей клетки 3) Просчитать новое направление 4) Запустить новый патч
Можно попробовать так: 1) создаем объект "курсор" 2) удаляем все курсоры какие есть еще на карте 3) запускаем новый патч к курсору
по идее mp_potential должен просчитать новый и путь и ИЗМЕНИТЬ НАПРАВЛЕНИЕ С ТЕКУЩЕЙ ТОЧКИ
LUXORIX GAMES
|
|
| |