2016-06-23 4 views
0

レベルのどこかにあるターゲットと、移動してどこでも狙うことができるプレーヤーがあります。 ここで、AIMとTARGETの距離を計算します。プレイヤーAIM(xyz、pitch、yaw)とターゲットベクトル(xyz)の距離を計算する

プレイヤーはどれくらい離れているのですか? - この値が '0'に近い場合、プレイヤーがターゲットを照準していることがわかります。 これを知りたいのは、プレイヤーがどれだけ離れているか、ショットを発射したかを計算したいからです。

  • ターゲットベクトル(X、Y、Z)位置/ COORDS:

    次の情報は、我々が持っているものです。

  • プレーヤーのベクトル(X、Y、Z)の位置/座標。
  • プレーヤーのピッチ&ヨー。

Drawing of the Situation

+1

私は、ポイントを計算するのに必要な方程式を得るために、http://math.stackexchange.com/から始めましょう。一度それを持って、簡単にjavascriptに変換する必要があります。 – FrankerZ

答えて

0

だからあなたは宇宙での目標点間の距離と狙いのラインとの距離を定義しました。距離を、プレーヤーとターゲットを結ぶ線と目標線との間の角度として定義することもできます。

幸い、これは簡単です:あなたがと、ピッチ及びヨーからベクトルaを計算することができる

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) 

enter image description here

ポイントBがラインaimからTargetのprepandicular投影であります次のような数式:

a_x = cos(pitch) * cos(yaw) 
a_y = sin(pitch) 
a_z = cos(pitch) * sin(yaw)