Unity坐標系入門

一、坐標系的概念Unity 世界坐標系采用左手坐標系,大拇指指向X軸(紅色),食指指向Y軸(黃色) , 中指向手心方向歪曲90度表示Z軸(藍色) , 同時Z軸也是物體前進方向 , 下圖表示Unity的四種坐標系:

Unity坐標系入門

文章插圖
Unity坐標系入門

文章插圖
其中GUI和Screen的單位是像素單位,什么是像素單位呢,這里可以先了解一下像素相關知識:
像素:簡單地來說 , 可以理解成一個方塊 , 它是圖像的最小單元,不能再分割,但它并沒有固定的大小 。
屏幕分辨率:指的是由像素組成的點陣,比如說一臺電腦的屏幕分辨率為1920*1080,那么該電腦屏幕在橫向有1920個像素,縱向有1080個像素 。
談及像素和分辨率,還有一個概念叫做PPI,什么是PPI呢?
PPI:每英寸像素數目 , 可以理解為屏幕像素密度
因為像素并沒有固定的大?。?,PPI 越高,像素大小越?。?也就越清晰 。具體的計算公式如下:
Unity坐標系入門

文章插圖
所以可以知道 , 在購買顯示器的時候,同是2K屏,24寸的是要比27寸的更清晰一些,因為PPI更高 。
回到正題,比如我的電腦的分辨率是1920*1080,那么其X軸最大單位就是1920,Y軸最大單位就是1080 。
了解了GUI、世界和屏幕坐標系后,Viewport坐標系其實沒什么好說的,只是進行了歸一化 。
二、Screen坐標系和World坐標系的換算在進行換算前,需要知道Camera相機的概念,相機又分為正交視圖(orthogonal)、透視視圖(perspective) 。
一般2D游戲采用正交視圖 , 3D游戲采用透視視圖 。
1、正交視圖
Unity坐標系入門

文章插圖
【Unity坐標系入門】2、透視視圖
Unity坐標系入門

文章插圖
1、2D坐標系換算(正交視圖)在上述示例中用到的天空背景圖的分辨率是4096*2048 , 但是有個地方很奇怪 , Unity顯示該圖分辨率是2048*1024,實際是4096*2048 。
Unity坐標系入門

文章插圖
Unity坐標系入門

文章插圖
如果想要背景圖填充滿整個屏幕,可以將游戲視圖分辨率設置為圖片分辨率,然后還需要設置相機大?。?
相機大小(size):采用世界坐標系單位 , 為屏幕半寬 。(所以相機大小為2048/2/100=10.24)
Pixels Per Unit:每多少像素為一世界坐標系單位 。
Unity坐標系入門

文章插圖
Unity坐標系入門

文章插圖
這里我們應該知道屏幕坐標系的范圍是(0,0)到(4096,2048),那世界坐標系范圍是什么呢?
Unity坐標系入門

文章插圖
世界坐標系的原點和范圍受到相機的影響,若相機的位置為(0,0) , 并且沒有發生旋轉,那么世界坐標系的原點就在屏幕正中心,其范圍是(-20.48,-10.24)到(20.48,10.24) 。
2、3D坐標系換算(透視視圖)3D坐標系換算相對更復雜一點,如下實例:
Unity坐標系入門

文章插圖
Unity坐標系入門

文章插圖

Unity坐標系入門

文章插圖
相機位于(0,0,-16),且視野角度為60度,帽子位于(0,6,0) , 且都沒有發生旋轉,那么其在Y軸上的分辨率既可以推算出來 。
Unity坐標系入門

文章插圖
同理,其在X軸上的分辨率也可以算出來 。

    推薦閱讀