0

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

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

以下信息是我们所拥有的:

  • 目标向量(X,Y,Z)位置/坐标。
  • 玩家向量(X,Y,Z)位置/坐标。
  • 球员俯仰和偏航。

情况图

4

1 回答 1

0

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

幸运的是,这很容易:

在此处输入图像描述

点 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)
于 2016-06-23T14:49:59.603 回答