Я делаю 2D игру. В настоящее время вертолет летит вокруг, управляемый игроком. Управление осуществляется с помощью клавиш со стрелками: ВВЕРХ, ВЛЕВО и ВПРАВО.
Это скорость по оси Y есть dy
, а скорость по оси X есть dx
.
Это физика выглядит следующим образом:
Всякий раз, когда ВВЕРХ не нажимается , dy
ускоряется с постоянным ускорением, неограниченно вниз. (Сила тяжести). dx
остается в его текущем значении.
Когда нажата кнопка ВВЕРХ , dy
ускоряется с постоянным ускорением от того, что есть в данный момент, до 4 (вверх, пока не достигнет скорости 4). dx
остается в его текущем значении.
Когда нажата кнопка ВЛЕВО , dx
ускоряется с постоянным ускорением, начиная с текущего значения, до -4 .
Когда RIGHT нажата , dx ускоряется с постоянным ускорением, от того, чем оно является в настоящее время, до 4 .
(Когда нажимаются ВЛЕВО или ВПРАВО, а ВВЕРХ не нажимается одновременно, как я уже сказал: dy
все больше становится все меньше и меньше, потому что сила тяжести влияет на вертолет)
Все это заставляет вертолет часто следовать по аркам в воздухе, а не по прямым линиям.
Это создает физику, которая кажется довольно реалистичной.
Мой вопрос:
Вертолет противника, ИИ, должен двигаться, используя ту же физическую систему.
Допустим, ИИ хочет добраться от того места, где он сейчас находится, к точке Б.
Если бы в игре не было гравитации и постепенного ускорения, это было бы легко. Я бы просто нарисовал вектор из позиции ИИ в точку В и заставил ИИ следовать за ним.
Но поскольку есть гравитация и постепенное ускорение, ИИ никогда не сможет двигаться по прямой (почти). Каков наилучший способ заставить ИИ перейти в точку B, насколько это возможно?
Как я могу принять во внимание гравитацию при перемещении ИИ к определенному месту назначения?
(Если это легче объяснить, пожалуйста, рассмотрите точку B на том же уровне по оси Y, что и AI, а не по диагонали к нему.)
Спасибо