這兩個函數是相機Camera類的函數,主要用來作爲點在屏幕座標系與世界座標系下的座標相互轉換。
官方文檔中的介紹:
ScreenToWorldPoint:從屏幕空間到世界空間的變化位置。屏幕空間以像素定義。屏幕的左下爲(0,0);右上是(pixelWidth,pixelHeight),Z的位置是以世界單位衡量的到相機的距離。
WorldToScreenPoint:從世界空間到屏幕空間變換位置。屏幕空間以像素定義,屏幕左下爲(0,0),右上是(pixelWidth,pixelHeight),Z的位置是以世界單位衡量的到相機的距離。
這裏關於到屏幕座標的轉換或者由屏幕座標向世界座標系的轉換,關於屏幕座標的部分都是由一個 Vector3 描述的。針對這個返回值,前兩個分別代表在屏幕座標的x軸與y軸,屏幕左下角爲起點(0,0),水平爲x軸,豎直爲y軸。
主要討論一下這個vector3的第三個值的意義。
這個第三個值指的是在世界座標系中,指定的點到相機平面之間的距離,也就是到相機的xy平面的距離,也即物體到相機的連線在相機本體座標系的z軸上的投影。
下面用一個簡單的例子看一下:
首先把一個cube放在(0,0,0)的位置,相機置於(0,0,-10)的位置,z軸正對cube。
此時Log一下cube的positon在屏幕座標系下的位置(用WorldToScreenPoint),發現結果如下,第三個值爲10。
接下來將相機繞Y軸分別旋轉45度與90度,執行同樣的操作。發現45度時第三個值爲10*cos(45度),約爲7.1。當旋轉90度時,第三個值爲0。可以驗證。
45度:
90度: