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

描述

如果边界位于该平面数组内,则返回 true。

如果包围盒位于这些平面内,或者与其中任何平面相交,则将返回 true。

The TestPlanesAABB function uses the Plane array to test whether a bounding box is in the frustum or not.
You can use this function with CalculateFrustrumPlanes to test whether a camera's view contains an object regardless of whether it is rendered or not.
The test is conservative and can give false positive results. A bounding box can intersect the planes outside of the frustum because the planes are infinite and extend beyond the frustum volume. A typical false positive result is produced by a big bounding box near the frustum edge or corner.

另请参阅: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"); } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961