2オブジェクトのポジションから距離を取得してなんやかんやすることはよくあると思います。
すぐ、頭に浮かぶのがDistance。
Vector3.Distance(A,B)
わかりやすいんですが、ただ、これは測定の際に平方根の計算が走る(らしい)ので処理をとられる。 じゃあ、どうすればなるべく軽く判定できるかっていうと、
Vector3のsqrMagnitudeプロパティ。
Vector3.sqrMagnitude
これは距離の二乗を提供してくれます。
判定するときは、2乗を判定にしておかないいけないので注意。
private void DistanceCheckTest() { float dist = 0; float target = 5f; float targetx2 = target * target; System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); //------------------------ // Distance //------------------------ sw.Start(); for (int i = 0; i < 1000000; i++) { dist = Vector3.Distance(cubeTransform.position, sphereTransform.position); if (dist > target) { } } sw.Stop(); Debug.Log(sw.ElapsedMilliseconds + "ms - Vector3.Distance"); sw.Reset(); //------------------------ // sqrMagnitude //------------------------ sw.Start(); for (int i = 0; i < 1000000; i++) { dist = (cubeTransform.position - sphereTransform.position).sqrMagnitude; if (dist > targetx2) { } } sw.Stop(); Debug.Log(sw.ElapsedMilliseconds + "ms - Vector3.sqrMagnitude"); }