1. 程式人生 > >unity------各種坐標理解

unity------各種坐標理解

point 大小 href main 坐標系 word 想要 繪制 所表

本人學生一枚,剛接觸Unity3D,若有理解得不對的地方,還望各路大神不吝賜教~

unity中的坐標系統包括世界坐標(World Space),屏幕坐標(Screen Space),視口坐標(View Space)以及GUI坐標系統。

世界坐標(World Space)

場景中添加的對象,它們是以世界坐標顯示在場景中,可以通過代碼transform.position獲得該對象的世界坐標,那麽我們在檢視面板(Inspector)中看到的Position的值在對象沒有父物體時,這個值和transform.position得到的結果一致的,若該對象有父物體,那麽檢視面板中(Inspector)看到的即為相對於父物體的相對坐標位置,這樣通過transform.position得到的值自然就不一樣了。總之,通過transform.position得到的都是對象的世界坐標。在對象存在父物體的情況下,若想要得到該對象在檢視面板(Inspector)中的值,可以通過transform.Localposition得到。

屏幕坐標(Screen Space)

屏幕坐標是通過像素來定義的,屏幕坐標的坐標系以屏幕左下角為(0,0)點,右上角為(Screen.width,Screen.height),屏幕坐標為3維坐標,z的大小由相機的世界位置來定義。通過Input.mousePosition得到的是屏幕坐標,屏幕坐標的數值只與屏幕的大小有關,跟分辨率沒有關系。

視口坐標(View Space)

視口坐標標準化後的屏幕坐標,它的坐標原點同樣是左下角為(0,0)點,只不過右上角為(1,1)點,若對象處在場景的正中間,則對象的視口坐標為(0.5,0.5),與屏幕坐標一樣,視口坐標也是一個3維的,它的z方向的數值由相機的世界位置來決定。

GUI坐標系

GUI坐標系主要在通過OnGUI方法繪制屏幕UI界面時運用較多,GUI坐標系是一個2維坐標系,與屏幕空間類似,所表示的範圍也是整個屏幕空間範圍,只不過GUI坐標的坐標原點在左上角,即左上角為(0,0)點,右下角為(Screen.width,Screen.height)。

坐標之間的轉換

世界坐標通過transform.position獲得

局部坐標通過transform.Localposition獲得

世界坐標與屏幕坐標之間的轉換

Camera.main.ScreenToWorldPoint(Vector 3) ——屏幕坐標轉換到世界坐標,其中的main為主相機,當然也可以為場景中其他相機

Camera.main.WorldToScreenPoint(transform.position)——世界坐標轉換到屏幕坐標 ,其中的main為主相機,當然也可以為場景中其他相機。這裏附帶一個鼠標拖拽物體的代碼,其中主要就是世界坐標與屏幕坐標之間轉換

unity------各種坐標理解