[Unity][基礎篇]坐標系

無論是2d還是3d游戲開發(fā)刽辙,圖形學都是基礎,解析幾何的基本思想是將幾何圖形抽象成點的運動軌跡拨匆,從而點可以作為組成圖形的基本元素讯检,而描述一個點的位置首先需要建立合適的坐標系琐鲁,再從代碼層面來理解,在調用任何需要設置位置的函數(shù)人灼,或從函數(shù)獲取位置信息前围段,必須要明確這個函數(shù)使用哪個坐標系,有了清晰的坐標系認識投放,能幫助你更順暢地理解游戲世界奈泪。

2D世界的坐標系

# 2D世界的坐標系比較好理解,以cocos2d為例灸芳,它支持如下幾種坐標系:
  • 屏幕坐標系:又名UI坐標系涝桅,標準屏幕坐標系使用和OpenGL不同的坐標系,原點在左上角烙样,X軸向右冯遂,Y軸向下。
  • GL坐標系:原點在左下角误阻,X軸向右债蜜,Y軸向上晴埂。
  • 世界坐標系:又名絕對坐標系,世界即指游戲世界寻定,是游戲開發(fā)中建立的概念儒洛,我們只要知道世界坐標系和 OpenGL 坐標系方向一致,原點在屏幕左下角狼速, x 軸向右琅锻, y 軸向上。
  • 節(jié)點坐標系:又名相對坐標系向胡,本地坐標恼蓬,和 OpenGL 坐標系方向一致,每個結點都有自己的坐標系僵芹。
坐標系示意.png

對于初學者來說处硬,可能并不能完成理解以上幾種坐標系的應用,我覺得可以這么理解拇派,屏幕坐標系和GL坐標系是一種坐標系理念荷辕,而節(jié)點坐標系和世界坐標系是兩種不同的應用,即兩者都是用的GL坐標系的理念件豌,只是坐標系原點不相同疮方;另外屏幕坐標系主要應用在Touch對象中的坐標(沒去細究為啥不用GL坐標系)

Unity3D的四種坐標系

# U3D使用的是左手坐標系,如下圖:
3d.jpg

世界坐標系

世界坐標是按照笛卡爾坐標系定義出來的絕對坐標系茧彤,下面的各種坐標系都建立在世界坐標的基礎上骡显。我們知道二維平面內任意一個點可以用二維坐標(x,y)來表示,如果將這個概念延伸到三維空間內曾掂,那么三維空間內任意一個點都可以用三維坐標(x,y,z)來表示惫谤。Unity3D采用的是左手坐標系。在Unity3D中我們可以使用transform.position來獲取場景中一個物體的世界坐標遭殉,通常情況下編輯器中的Inspector窗口是以世界坐標來描述一個3D物體的位置的石挂,除非當一個3D物體存在父物體的時候,它會以相對坐標來描述其位置险污。

屏幕坐標系

屏幕坐標是以像素來定義的痹愚,它的范圍是以左下角為(0,0),右上角為(Screen.width,Screen.height)定義的這樣一個矩形蛔糯。屏幕坐標是一個3D坐標拯腮,Z軸是以相機的世界單位來衡量的。屏幕坐標和相機之間滿足:Screen.width=Camera.pixelWidth和Screen.height=Camera.pixelHeight這兩個條件蚁飒。例如我們將相機正對著場景中的原點(0,0,0),相機的Z軸分量為-10动壤,按照屏幕坐標的定義,假設屏幕為800X640的大小淮逻,則此時原點轉化為屏幕坐標后應該是(400,320,10)琼懊。在Unity3D中我們可以使用WorldToScreenPoint來將一個世界坐標轉換為屏幕坐標阁簸。
鼠標位置Input.mousePosition獲取的是屏幕坐標。
例如場景分辨率1024x768哼丈,如果屏幕被縮小至100x100启妹,那么點擊右上角是100x100,而不是分辨率的1024x768醉旦。

視口坐標系

視口坐標是標準化后的屏幕坐標饶米。標準化的概念我們可以引申到向量的標準化中,比如一個向量(x,y)將過標準化后可以得到一個單位向量(x’,y’)车胡。類似地檬输,視口坐標是以0到1間的數(shù)字來表示的,它的范圍是以左下角為(0,0),右上角為(1,1)定義的這樣一個矩形匈棘。視口坐標是一個3D坐標丧慈,Z軸是以相機的世界單位來衡量的。通過對比可以發(fā)現(xiàn)視口坐標和屏幕坐標特別的相似羹饰,所以這里大家可以對比著來學習伊滋。同樣以屏幕坐標中的例子來將這里的轉換碳却,例如我們將相機正對著場景中的原點(0,0,0),相機的Z軸分量為-10队秩,按照屏幕坐標的定義,假設屏幕為800X640的大小昼浦,則此時原點轉化為視口坐標后應該是(0.5,0.5,10)馍资。在Unity3D中我們可以使用WorldToViewportPoint來將一個世界坐標轉換為視口坐標。

GUI坐標系

GUI坐標是指通過OnGUI方法繪制UI時使用的坐標关噪。這個坐標系和屏幕坐標類似鸟蟹,它同樣是以像素來定義的,它的范圍是以左上角為(0,0),右下角為(Screen.width,Screen.height)定義的這樣一個矩形使兔,GUI坐標是一個2D坐標(絕對坐標)建钥。我們知道使用絕對坐標來進行布局的話是沒有辦法做自適應的,UI自適應的一個主要觀點就是不要使用絕對坐標虐沥!不要使用絕對坐標熊经!不要使用絕對坐標!

總結

關于GUI坐標系在接下來UGUI的文章中會再詳細分析欲险,暫時抄襲如下:
uGUI的坐標本質上是特殊的屏幕坐標镐依,uGUI的Anchor決定了該坐標系的原點,pivot決定了元素本身坐標系的原點天试,正是這兩個屬性讓uGUI的坐標看起來顯得撲朔迷離

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末槐壳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子喜每,更是在濱河造成了極大的恐慌务唐,老刑警劉巖雳攘,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異枫笛,居然都是意外死亡来农,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門崇堰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沃于,“玉大人,你說我怎么就攤上這事海诲》庇ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵特幔,是天一觀的道長咨演。 經(jīng)常有香客問我,道長蚯斯,這世上最難降的妖魔是什么薄风? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拍嵌,結果婚禮上遭赂,老公的妹妹穿的比我還像新娘。我一直安慰自己横辆,他們只是感情好撇他,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著狈蚤,像睡著了一般困肩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脆侮,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天锌畸,我揣著相機與錄音,去河邊找鬼靖避。 笑死潭枣,一個胖子當著我的面吹牛,可吹牛的內容都是我干的筋蓖。 我是一名探鬼主播卸耘,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粘咖!你這毒婦竟也來了蚣抗?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翰铡,沒想到半個月后钝域,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡锭魔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年例证,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迷捧。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡织咧,死狀恐怖,靈堂內的尸體忽然破棺而出漠秋,到底是詐尸還是另有隱情笙蒙,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布庆锦,位于F島的核電站捅位,受9級特大地震影響,放射性物質發(fā)生泄漏搂抒。R本人自食惡果不足惜艇搀,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望求晶。 院中可真熱鬧焰雕,春花似錦、人聲如沸誉帅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚜锨。三九已至,卻和暖如春慢蜓,著一層夾襖步出監(jiān)牢的瞬間亚再,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工晨抡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留氛悬,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓耘柱,卻偏偏與公主長得像如捅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子调煎,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容

  • 一镜遣、Unity3D中有哪些坐標系? 坐標系這個概念最早是由法國數(shù)學家笛卡爾提出的士袄,并由此創(chuàng)造了用代數(shù)方法來研究幾何...
    OneMore2018閱讀 4,561評論 0 7
  • 笛卡爾坐標系的定義 :1悲关、每個2D笛卡爾坐標系都有一個特殊的點谎僻,稱為原點(0,0)它是坐標系的中心。2寓辱、每個2D笛...
    好怕怕閱讀 3,347評論 3 8
  • 3D坐標系是在做3D項目開發(fā)中的基礎概念艘绍,一般來說3D軟件或者開發(fā)工具都是采用笛卡爾坐標系來描述物體的坐標信息。笛...
    S_H_C閱讀 6,312評論 0 6
  • 一秫筏、 World Space(世界坐標) 我們在場景中添加物體(如:Cube)诱鞠,他們都是以世界坐標顯示在場景中的。...
    HoyaWhite閱讀 2,534評論 0 0
  • 一 这敬、世界坐標系--全局坐標系: 用來描述游戲場景內所有物體位置和方向的基準般甲,也稱為世界坐標系。Unity場景中創(chuàng)...
    _涼笙閱讀 5,197評論 0 4