Рассчитайте расстояние между игроками AIM (xyz, pitch, yaw) и TARGET Vector(xyz)

У нас есть цель, которая находится где-то на уровне, и игрок, который может двигаться и целиться где угодно. Теперь мы хотим рассчитать расстояние между игроками AIM и TARGET.

Насколько далеко игроки стремятся от цели? - Если это значение близко к "0", мы знаем, что игрок целится в цель. Мы хотим знать это, так как нам нравится вычислять, как далеко от игрока был, когда он выстрелил.

Следующая информация - это то, что мы имеем:

  • Целевой вектор (X, Y, Z) позиция / координаты.
  • Вектор игрока (X, Y, Z) позиция / координаты.
  • Подача игрока и рыскание

Рисование ситуации

1 ответ

Решение

Таким образом, вы определили расстояние как расстояние между целевой точкой в ​​пространстве и линией цели. Обратите внимание, что вы также можете определить расстояние как угол между линией, соединяющей игрока и цель, и линией цели.

К счастью, это легко:

введите описание изображения здесь

Точка b - предпандикулярная проекция Target к линии aim:

t = Target - Player
i = max(a*t/a*a, 0) (so we won't report false distances when the target is behind)
B = Player + a * i
distance = dist(B, Target) = len(B - Target)

Вы можете рассчитать вектор a от подачи и рыскания с некоторыми формулами, как эти:

a_x = cos(pitch) * cos(yaw)
a_y = sin(pitch)
a_z = cos(pitch) * sin(yaw)
Другие вопросы по тегам