円の公式を利用して、点が円の内側かどうかを判定する
球の場合は以下の式で判定できる
using UnityEngine; public class MathUtil { /// <summary> /// 球の内側か /// (x - a)^2 + (y - b)^2 + (z - c)^2 <= r^2 /// </summary> /// <param name="p">球の中心座標</param> /// <param name="r">半径</param> /// <param name="c">対象となる点</param> /// <returns></returns> public static bool InSphere(Vector3 p, float r, Vector3 c) { var sum = 0f; for (var i = 0; i < 3; i++) sum += Mathf.Pow(p[i] - c[i], 2); return sum <= Mathf.Pow(r, 2f); } /// <summary> /// 円の内側か /// (x - a)^2 + (y - b)^2 <= r^2 /// </summary> /// <param name="p">円の中心座標</param> /// <param name="r">半径</param> /// <param name="c">対象となる点</param> /// <returns></returns> public static bool InCircle(Vector2 p, float r, Vector2 c) { var sum = 0f; for (var i = 0; i < 2; i++) sum += Mathf.Pow(p[i] - c[i], 2); return sum <= Mathf.Pow(r, 2f); } }