「毎日Unity」の技術ブログ

開発で役立つ情報を発信する

【UnityC#】距離比較はDistance()よりsqrMagnitudeを使え

Distance()よりsqrMagnitudeを使った方が良い理由についてまとめました。

[ 理由 ]

理由は簡単で、Distance()には処理に時間がかかるルート計算が含まれるからです。
sqrMagnitudeにはルート計算が含まれないためDistance()よりも短時間で処理できます。

[ 使用例 ]

例えば座標Aから座標Bまでの距離と座標Aから座標Cまでの距離が等しいか否かを確認するプログラムを書くとします。

Distance()を使用した場合

if(Vector3.Distance(B, A) == Vector3.Distance(C, A))
{
    //距離が等しい
}
else
{
    //距離が等しくない
}

sqrMagnitudeを使用した場合

if((B - A).sqrMagnitude == (C - A).sqrMagnitude)
{
    //距離が等しい
}
else
{
    //距離が等しくない
}