Рассчитайте расстояние между игроками 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)