Unity中的座標系--螢幕轉全局座標

來源:互聯網
上載者:User

標籤:vector   tools   sdn   遊戲   forms   獲得   pac   bar   官網文檔   

 

Camera.ScreenToWorldPoint
Vector3 ScreenToWorldPoint(Vector3 position);

將螢幕座標轉換為全局座標。

如何轉換?假如給定一個所謂的螢幕座標(x,y,z),如何將其轉換為全局座標?

首先,我們要理解攝像機是如何渲染物體的:

攝像機對遊戲世界的渲染範圍是一個平截頭體,渲染邊界是一個矩形,用與near clippingplane或者far clippingplane平行的平面截取這個平截頭體,可以獲得無數個平行的矩形面,也就是我們看到的螢幕矩形。離攝像機越遠,矩形越大,離攝像機越近,矩形越小。所以,同樣大小的物體,隨著離攝像機越來越遠,相對於對應螢幕矩形就越來越小,所看起來就越來越小。

在螢幕上,某個像素點相對於螢幕矩形的位置,可以對應於遊戲世界中的點相對於某個截面的位置,關鍵在於這個點在哪個截面上,也就是說,關鍵在於這個截面離攝像機有多遠!

 

在ScreenToWorldPoint這個方法中,參數是一個三維座標,而實際上,螢幕座標只能是二維座標。參數中的z座標的作用就是:用來表示上述平面離攝像機的距離。

也就是說,給定一個座標(X,Y,Z),

首先截取一個垂直於攝像機Z軸的,距離為Z的平面P,這樣不管X,Y怎麼變化,返回的點都只能在這個平面上;

然後,X,Y表示像素座標,根據(X,Y)相對於螢幕的位置,得到遊戲世界中的點相對於截面P的位置,我們也就將螢幕座標轉換為了全局座標。

 

官網文檔中的說法:

Camera.ScreenToWorldPoint
 
 Vector3 ScreenToWorldPoint(Vector3 position);
Description
 Transforms position from screen space into world space.
  
  Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight). The z position is in world units from the camera.

  轉自:http://blog.csdn.net/czlilove/article/details/21173669 

Unity中的座標系--螢幕轉全局座標

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.