今天超级简单!
判断两个球相交不相交,直接判断两个球心的距离是否大于两个半径的和就可以了。
检测代码
public static bool IntersectSphereSphere(Sphere sphere0, Sphere sphere1)
{
Vector3 delta = sphere0.center - sphere1.center;
return delta.sqrMagnitude <= (sphere0.radius + sphere1.radius) * (sphere0.radius + sphere1.radius);
}
测试代码
public class SphereSphereTester : MonoBehaviour {
public GameObject sphere0;
public GameObject sphere1;
Sphere _sphere0;
Sphere _sphere1;
// Use this for initialization
void Start()
{
_sphere0 = new Sphere();
_sphere1 = new Sphere();
}
// Update is called once per frame
void Update()
{
UpdateShapes();
if (NIntersectTests.IntersectSphereSphere(_sphere0, _sphere1))
{
sphere0.GetComponent<MeshRenderer>().materials[0].SetColor("_Color", new Color(1, 0, 0));
} else
{
sphere0.GetComponent<MeshRenderer>().materials[0].SetColor("_Color", new Color(1, 1, 1));
}
}
void UpdateShapes()
{
_sphere0.center = sphere0.transform.position;
_sphere0.radius = 0.5f * sphere0.transform.localScale.x;
_sphere1.center = sphere1.transform.position;
_sphere1.radius = 0.5f * sphere1.transform.localScale.x;
}
}
运行结果