Описание
Возвращает значение true, если границы находятся внутри массива плоскости.
Возвращает значение true, если ограничивающая рамка находится внутри плоскостей или пересекает любую из плоскостей.
Функция TestPlanesAABB использует массив Plane для проверки того, находится ли ограничивающая рамка в области усечения или нет. Вы можете использовать эту функцию с CalculateFrustrumPlanes, чтобы проверить, содержит ли вид камеры объект, независимо от того, визуализируется он или нет. Тест консервативен и может давать ложноположительные результаты. Ограничивающая рамка может пересекать плоскости за пределами усеченного конуса, потому что плоскости бесконечны и выходят за пределы объема усеченного конуса. Типичный ложноположительный результат возникает из-за большой ограничивающей рамки рядом с краем или углом усеченной пирамиды.
Смотрите так же: GeometryUtility.CalculateFrustumPlanes.
using UnityEngine;
public class Example : MonoBehaviour
{
// Detects manually if obj is being seen by the main camera
GameObject obj;
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(obj.name + " has been detected!");
}
else
{
Debug.Log("Nothing has been detected");
}
}
}