Unity 6.3
0 онлайн 69 гостей 3 в системе
Вход

GeometryUtility.TestPlanesAABB

Declaration

public static bool TestPlanesAABB(Plane[] planes, Bounds bounds);

Описание

Возвращает 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"); } } }