首页 > Unity3D频道 > 【Unity杂文】 > Unity3D研究院之获取摄像机的视口区域
2014
07-31

Unity3D研究院之获取摄像机的视口区域

摄像机分为两种,一种是正交摄像机还有一种是透视摄像机。正交摄像机无论远近它的视口范围永远是固定的,但是透视摄像机是由原点向外扩散性发射,也就是距离越远它的视口区域也就越大。那么我们如何获取距离摄像机任意距离的视口区域呢?如下图所示,分别用红色和黄色两种颜色将计算出来的视口区域标记了出来。

Unity3D研究院之获取摄像机的视口区域 - 雨松MOMO程序研究院 - 1

 

下面上代码,把如下脚本挂在摄像机出直接运行游戏即可看到。

这个脚本是我在逛国外网站无意间发现的,我这里翻译成了C#语言。http://answers.unity3d.com/questions/509466/scale-box-collider-to-camera-view-1.html?sort=oldest

我们可以根据文章里的算法计算出视口3D的坐标点,有了坐标信息那么想干什么都好干了,呵呵。

 

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. 雨松大大,你发的老外的链接下面,还有更简便的方法。 /// /// Gets the corners. /// /// Camera. /// Distance. /// Corners. public static void GetCorners(Camera camera, float distance, ref Vector3[] corners) { Array.Resize(ref corners, 4); // Top left corners[0] = camera.ViewportToWorldPoint(new Vector3(0, 1, distance)); // Top right corners Unity3D研究院之获取摄像机的视口区域 - 雨松MOMO程序研究院 - 1 = camera.ViewportToWorldPoint(new Vector3(1, 1, distance)); // Bottom left corners Unity3D研究院之获取摄像机的视口区域 - 雨松MOMO程序研究院 - 2 = camera.ViewportToWorldPoint(new Vector3(0, 0, distance)); // Bottom right corners Unity3D研究院之获取摄像机的视口区域 - 雨松MOMO程序研究院 - 3 = camera.ViewportToWorldPoint(new Vector3(1, 0, distance)); }