计算玩家 AIM (xyz, pitch, yaw) 和 TARGET Vector(xyz) 之间的距离

Calculate the distance between the players AIM (xyz, pitch, yaw) and the TARGET Vector(xyz)

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

玩家的目标离目标有多远? - 如果这个值接近“0”,我们就知道玩家正在瞄准目标。 我们想知道这一点,因为我们想计算玩家开枪时离他有多远。

以下是我们的信息:

Drawing of the Situation

所以你把距离定义为space中的目标点和瞄准线之间的距离。请注意,您还可以将距离定义为连接玩家和目标的线与瞄准线之间的角度。

幸运的是这很简单:

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