Суббота, 18 Августа 2018, 23:08

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » [GMS] Движение по сетке (квадрат)
[GMS] Движение по сетке (квадрат)
Veliky_VirusДата: Суббота, 07 Ноября 2015, 09:15 | Сообщение # 1
ДьявоЛ
Сейчас нет на сайте
Всем доброго времени суток!

Возник вопрос касающийся движения персонажа. И так что же я хотел бы сделать?
1. Сетку размерами 20х20 (в дальнейшем же будет ходьба ровно на клетку сетки);
2. При нажатии в любое место (собственно это простое) появлялся объект. (для понимания моего вопроса);
3. Персонаж при появлении этого объекта, начинает движение к нему. При этом он ходит только на 4 стороны (влево, вправо, верх, вниз) без каких либо отклонений, с соответственным поиском пути, и ровно по сетке!

Постоянное движение я сделал, и с поиском пути, вроде всё хорошо, да только я сделал это через Patch. Нужно чтобы персонаж менял своё направление, а не доходил до конца, и только потом можно поменять:)

Заранее благодарен за помощь happy


Сообщение отредактировал Veliky_Virus - Суббота, 07 Ноября 2015, 09:56
maksim1221232Дата: Суббота, 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, если честно, то я не понял wink Моя вина dry
maksim1221232Дата: Суббота, 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
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » [GMS] Движение по сетке (квадрат)
  • Страница 1 из 1
  • 1
Поиск:

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