2016-06-23 3 views
0

У нас есть цель, которая находится где-то на уровне, и игрок, который может перемещаться и может целиться в любом месте. Теперь мы хотим рассчитать расстояние между игроками AIM и TARGET.Рассчитайте расстояние между игроками AIM (xyz, pitch, yaw) и TARGET Vector (xyz)

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

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

  • целевой вектор (X, Y, Z) положение/COORDS.
  • Игрок (X, Y, Z) Позиция/координаты.
  • Шаг игрока & рыскание.

Drawing of the Situation

+1

Я бы, наверное, начинал: http://math.stackexchange.com/, чтобы получить уравнения, необходимые для вычисления точки. Как только вы это сделаете, преобразование в javascript должно быть легким. – FrankerZ

ответ

0

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

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

enter image description here

точка Ь является prepandicular проекция 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) 
Смежные вопросы