Здравствуйте. Делаю RTS игру, но тут у меня появилась проблема с танком, стрельба готова, поиск цели есть, но вот не понимаю как сделать движение! Мне надо сделать так что бы танк объезжал препятствия и ехал в координаты которые записаны в переменные xp и yp Желательно что бы это было поиском пути, но если это трудно реализовать, то хотя бы обычным mp_potential_step. Сама трудность в том, что мне надо что бы при повороте танк останавливался, разворачивался в сторону которую надо и ехал дальше.
Вот пример на картинке. Танку надо доехать до точки X2, но на прямую так просто не проехать. Тогда он должен ехать в точку X1, когда проедет, он должен остановится, и плавно развернутся(плавный разворот уже готов) в сторону точки X2. Когда танк к ней развернётся, он должен продолжить двигатся.
Если через mp_potential_step, то как вариант, проверять угол спайта, если изменяется, то останавливаться, поворачиваться к точке, продолжать движение. Это если ты делаешь плавный поворот через image_angle. Другой вариант - сверять xprevious и yprevious с текущими позициями и уже оттуда плясать.
Не совсем понятно - у тебя танк двигается только в 4 направлениях?
Он может в любую сторону. Я пробовал делать mp_potential_step и ставить скорость 0.00000000000001, потом меняется direction. Дальше я приравниваю mdir(поворот самого танка) к direction и когда mdir=direction то приравниваю speed к 1 и танк должен ехать, но это у меня почему то не получается.
ЦитатаOrdan ()
А я думал в гамаке есть поиск пути для ии...
Правда? Я даже не знал! Мне надо что бы при повороте, танк останавливался и плавно поворачивался и когда повернулся, продолжал ехать.
Дальше я приравниваю mdir(поворот самого танка) к direction и когда mdir=direction то приравниваю speed к 1 и танк должен ехать, но это у меня почему то не получается.
Так speed тут и ни при чём. После поворота заново вызывай mp_potential_step и будет тебе счастье Текущий проект: The Experiment ☭
Скорее всего ты direction не присваиваешь значение, когда спрайт поворачивается. Пропиши его рядом с кодом изменения угла спрайта. Текущий проект: The Experiment ☭
if place_free (x+1, y){ if place_free(x-1, y){ if place_free(x, y-1){ if place_free(x, y+1){ if distance_to_object(object2) < 100 { direction = point_direction(x,y, object2.x, object2.y) speed = 4; }}}}}
гоняется за object2 если дистанция меньше 100 пикселей.