ぱふの自由帳

週2更新目指す技術ブログ。メインはUnity。最近、競プロ始めましたー!良ければフォローお願いします(`・ω・´)

【Unity】2点間の距離を求めるいくつかの方法

はじめに

2点間の距離を求める方法がいくつかあるので紹介したいと思います!
是非、自分好みの方法を探してみて下さい〜。

方法紹介

その1:三平方の定理

三平方の定理の詳細は解説サイトにお任せします。

直角三角形の斜辺をC, その他の辺をAとBとすると、
A^2 + B^2 = C^2 ってなるやつですね。


コードはこちらになります。

Vector2 posA = new Vector2(1f, 2f);
Vector2 posB = new Vector2(3f, 4f);

float distance = Mathf.Sqrt(Mathf.Pow(posA.x - posB.x, 2) + Mathf.Pow (posA.y - posB.y, 2));
  • Mathf.Pow()は累乗を行う関数

  • Mathf.Sqrt()は与えた数を平方根に直す関数

その2:magnitude

magnitudeはベクトルの長さを返してくれます。
そのため、最初に2点の引き算を行うことでベクトルに変換して使用します。

Vector2 posA = new Vector2(1f, 2f);
Vector2 posB = new Vector2(3f, 4f);

float distance = (posA - posB).magnitude;

その3:Distance()

Distance()は2点を与えると2点間の距離を返してくれます。

Vector2 posA = new Vector2(1f, 2f);
Vector2 posB = new Vector2(3f, 4f);

float distance = Vector2.Distance(posA, posB);

さいごに

個人的にはその3が好きですね〜。
距離っていう名前の関数名なので後から見ても分かりやすいですし!

好きな方法を模索してみて下さい!では〜。