相机在Unity 3D中以透视模式界定

时间:2016-03-29 10:45:00

标签: unity3d unity5

如何在Unity 3D中找到透视摄像机的极左,右,顶部,底部点。我正在尝试缩放和平移。我需要这些点来检查我是否会离开我的界限。还有其他方法可以找到吗?

2 个答案:

答案 0 :(得分:1)

此统一手册条目直接回答了您的问题:

FrustumSizeAtDistance

总结一下:

要计算给定距离处视锥体的高度,我们可以这样计算:

var frustumHeight = 2.0f * distance * Mathf.Tan(camera.fieldOfView * 0.5f * Mathf.Deg2Rad);

如果我们已经知道视锥体高度,我们可以计算相机的相应距离:

var distance = frustumHeight * 0.5f / Mathf.Tan(camera.fieldOfView * 0.5f * Mathf.Deg2Rad);

一旦我们在给定距离处得到视锥体高度,我们可以使用相机方面计算其宽度:

var frustumWidth = frustumHeight * camera.aspect;

这也可以这样颠倒:

var frustumHeight = frustumWidth / camera.aspect;

答案 1 :(得分:0)

Camera.ScreenToWorldPoint会帮助你。

例如,要找到投射到世界的屏幕的左下角,请使用:

camera.ScreenToWorldPoint(new Vector3(0, 0, distance_from_camera));