如何在Unity 3D中找到透视摄像机的极左,右,顶部,底部点。我正在尝试缩放和平移。我需要这些点来检查我是否会离开我的界限。还有其他方法可以找到吗?
答案 0 :(得分:1)
此统一手册条目直接回答了您的问题:
总结一下:
要计算给定距离处视锥体的高度,我们可以这样计算:
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));