Программирование плавного изменения тяги от текущего вектора скорости к целевому вектору

TL; Dr: "Я не уверен, как рассчитать плавный переход тяги между одним вектором ».

Я программирую простую игру, в которой враг гоняется за игроком на открытом пространстве (без стен). Я подсчитывал врагас х & у скорости независимо, ускоряя их, если они вели их в направлении игрока, и быстро замедляя их, если они двигались в неправильном направлении (например, EnemyVelocity.x> 0 & player.x < врага.x, затем EnemyVelocity.x - 2.)

В то время как игровой процесс довольно забавен, пытаясь увернуться от врага, я хочу, чтобы враг вел себя, используя правильную физику. В настоящее время я делаю, чтобы враг установил свою тягу (например, космический корабль) на основе угла между ними и игроком, а его тяга ускорилась до максимальной скорости (вычисление стороны c треугольника EnemyVelocity). Как только это произойдет, яЯ не уверен, что лучший способ отрегулировать тягу. Если я не оставлю максимальную скорость, противник ускоряется, но легко обгонит игрока, а затем потребуется много времени, чтобы набрать достаточный импульс, возвращаясь в игрока ».направление

Что я'хотелось бы, чтобы враги постоянно корректировали свою скорость на пути к игроку, нацеливая, где бы они ни были (я нене хочу, чтобы они предсказывали, где ты будешь). Затем, когда они скучают по игроку, яхотелось бы за ту же тягу формулы ускорения, чтобы скорректировать их скорость и отправить их обратно в плеер.

Я думаю, что это будет включать два вектора: один, где враг в настоящее время путешествует, и другой, где враг хочет путешествовать (вектор, который доставит их прямо к игроку). Я не уверен, как рассчитать плавный переход тяги между одним вектором и другим.

Любые советы, формулы или вопросы будут высоко оценены! Спасибо, переполнение стека.

Ответы на вопрос(7)

Ваш ответ на вопрос