Unity で二点間の距離を求める

シェアする

Unity である二点の距離を求めるには以下のようにとても便利なメソッドが用意されています。

static float Vector2.Distance(Vector2 a, Vector2 b);
static float Vector3.Distance(Vector3 a, Vector3 b);

もしくは以下のように magnitude を使用するのも良いです。

(pos1 - pos2).magnitude

どちらも対象の座標を2つ入れるだけです。簡単ですね。

Sponsored Links

どういった計算をしているのか

中学校レベルの数学なんですけどだいぶ頭から抜けているようで復習した。
ピタゴラスの定理を使って求めると良いようです。

平面幾何学において直角三角形の斜辺の長さを c、他の2辺の長さを a, b とすると、
a^2 + b^2 = c^2
が成り立つという定理である。

ピタゴラスの定理 - Wikipedia

なので二点間(A,B)の距離を求めるには、(ax - bx)^2 + (ay - by)^2 == AB^2 という方程式を解く必要があります。3次元でも計算式が長くなるだけで基本は同じですね。

コードを書いて確認してみる。

public class TestDistance : MonoBehaviour {
	void Start () {
		Vector2 pos1 = new Vector2(10.0f, 24.0f);
		Vector2 pos2 = new Vector2(3.0f, 10.0f);
		Debug.Log (Vector2.Distance(pos1, pos2));
		Debug.Log ((pos1 - pos2).magnitude);
		Debug.Log (Mathf.Sqrt(Mathf.Pow(pos1.x - pos2.x, 2) + Mathf.Pow (pos1.y - pos2.y, 2)));
	}
}

計算結果はどれも 15.65248 となりました。ばっちしですね。

Sponsored Link

シェアする

フォローする