Unity检测物体是否在摄像机的视角范围内的两种方法
1.第一种方法,通过调用API
void OnBecameVisible()
{
text.text = "物体在摄像机的可视范围内";
}
void OnBecameInvisible()
{
text.text = "物体不在摄像机的可视范围内";
}
这种方法在unity程序中是根据Scene视图来进行判断的,但是打包到安卓或者pc端不回出现这种情况。
2.第二种方法
GameObject cube;
Collider objCollider;
Camera cam;
Plane[] planes;
void Start()
{
cam = Camera.main;
planes = GeometryUtility.CalculateFrustumPlanes(cam);
objCollider = GetComponent<Collider>();
}
void Update()
{
if (GeometryUtility.TestPlanesAABB(planes,objCollider.bounds))
{
Debug.Log(cube.name+"检测到了");
}
else
{
Debug.Log(cube.name + "没检测到");
}
}
将脚本挂在需要检测的物体上。
注意使用这两种方法要确保要检测的物体身上挂载的有MeshRenderer组件!!!