有一段时间没上博客了,今天说下 摄像机 可视区域,一般用这个的,都是为了 固定范围,或者让不可视地方 删除,提高性能。
之前雨凇有一篇 perspective 可视区域的代码。
我再补充一个 Orthographic 可视区域的。
先看 动态效果图
开头是 雨凇的 之后是 我的。慢慢看
然后就是 上代码
using UnityEngine;
using System.Collections;
public class Cameras : MonoBehaviour
{
public GameObject mainCamera;
float frustumHeight;
float frustumWidth;
void Start()
{
}
void Update()
{
frustumHeight = mainCamera.GetComponent<Camera>().orthographicSize * 2;
frustumWidth = frustumHeight * mainCamera.GetComponent<Camera>().aspect;
Vector3 camerass = mainCamera.transform.position;
Vector3 leftup = new Vector3(camerass.x - frustumWidth / 2.0f, camerass.y + frustumHeight / 2.0f, 100);
Vector3 rigthup = new Vector3(camerass.x + frustumWidth / 2.0f, camerass.y + frustumHeight / 2.0f, 100);
Vector3 leftdown = new Vector3(camerass.x - frustumWidth / 2.0f, camerass.y - frustumHeight / 2.0f, 100);
Vector3 rigthdown = new Vector3(camerass.x + frustumWidth / 2.0f, camerass.y - frustumHeight / 2.0f, 100);
Debug.DrawLine(leftup, rigthup, Color.yellow); // UpperLeft -> UpperRight
Debug.DrawLine(rigthup, rigthdown, Color.yellow);
Debug.DrawLine(rigthdown, leftdown, Color.yellow);
Debug.DrawLine(leftdown, leftup, Color.yellow);
}
}