计算球员AIM(xyz,俯仰,偏航)和TARGET Vector(xyz)之间的距离

时间:2016-06-23 14:33:12

标签: javascript math vector squirrel

我们有一个目标,它位于关卡中的某个位置,以及一个可以移动并可以瞄准任何地方的玩家。 现在我们想要计算玩家AIM和目标之间的距离。

球员与目标的距离有多远? - 如果此值接近' 0'我们知道玩家的目标是瞄准目标。 我们想知道这一点,因为我们喜欢计算玩家离开的距离,当他们开枪时。

我们拥有以下信息:

  • 目标矢量(X,Y,Z)位置/坐标。
  • 玩家矢量(X,Y,Z)位置/坐标。
  • 玩家音调&偏航。

Drawing of the Situation

1 个答案:

答案 0 :(得分:0)

因此,您将距离定义为空间中目标点与目标线之间的距离。请注意,您还可以将距离定义为连接玩家和目标的线与目标线之间的角度。

幸运的是,这很简单:

enter image description here

点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)