2016-03-29 9 views
0

どのようにユニティ3Dで左、右、上、下のポイントのパースペクティブカメラを見つけることができますか?ズームとパンをしようとしています。私は私のバウンドから出て行くかどうかを確認するためにそれらのポイントが必要です。他に見つける方法はありますか?ユニティ3Dのパースペクティブモードのカメラ境界

答えて

0

Camera.ScreenToWorldPointがお手伝いします。

例えば、世界に投影画面の左下のポイントを見つけるために、これを使用しますので、

FrustumSizeAtDistance

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

、何右上のでしょうか? camera.ScreenToWorldPoint(新しいVector3(1、1、distance_from_camera))を使用すると、 [viewportToWorldPoint'](http://docs.unity3d.com/ScriptReference/Camera.ViewportToWorldPoint.html)になる0,0 0 – user2810313

+0

@ user2810313と同じ値を与えるか、** 1 **の代わりに画面の幅を使用すると高さ。 – AgentFire

0

この団結マニュアルエントリは直接あなたの質問に答えます要約すると:

所定の距離で視錐台の高さを計算するには、次のように計算します。

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;

関連する問題