private void Update()
{
corners = new Vector3[4];
gameObject.GetComponent<RectTransform>().GetWorldCorners(corners);
Debug.Log(IsVisible(Camera.main, corners));
}
bool IsVisible(Camera camera, Vector3[] worldPositions)
{
Matrix4x4 vp = camera.cullingMatrix;
foreach (var wp in worldPositions)
{
Vector4 v = wp;
v.w = 1;
Vector4 p = vp * v;
if (p.w > p.x && -p.w < p.x && p.w > p.y && (-p.w < p.y) && p.w > p.z && -p.w < p.z)
{
return true;
}
}
return false;
}

Unity中检查物体可见性的技巧
本文介绍了一种在Unity中使用Camera.cullingMatrix来检查物体是否在摄像机视图内的方法。通过获取物体的世界角点并应用视锥裁剪矩阵,可以高效地判断物体是否完全或部分可见。

2877

被折叠的 条评论
为什么被折叠?



