2016-03-29 69 views

回答

0

Camera.ScreenToWorldPoint會幫助你。

例如,要找到投射到世界上屏幕的左下點,使用此:

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

那麼右上角呢?當我使用camera.ScreenToWorldPoint(new Vector3(1,1,distance_from_camera));它給了我相同的值0, – user2810313

+0

@ user2810313這將是['ViewportToWorldPoint'](http://docs.unity3d.com/ScriptReference/Camera.ViewportToWorldPoint.html)或而不是** 1 **使用屏幕的寬度和身高。 – AgentFire

0

這種團結手動輸入直接回答你的問題:

FrustumSizeAtDistance

所以總結:

要計算視距在給定距離處的高度,我們可以這樣計算它:

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

如果我們已經知道了frustumHeight我們可以計算到相機相應的距離:

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

一旦我們在給定距離frustumHeight我們可以通過計算它的寬度攝像頭方面:

var frustumWidth = frustumHeight * camera.aspect;

這也可以顛倒如下:

var frustumHeight = frustumWidth/camera.aspect;