版本:Unity 6 (6000.0)
语言英语
  • C#

GeometryUtility.TestPlanesAABB

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们会阅读用户提出的每项建议,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,无法提交您的更改建议。请在几分钟后<a>重试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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"); } } }