Unity3D坐標系

一 、世界坐標系--全局坐標系:

用來描述游戲場景內所有物體位置和方向的基準,也稱為世界坐標系。
Unity場景中創建的物體都是以全局坐標系中的坐標原點(0,0,0)來確定各自的位置


世界坐標

二、局部坐標系(物體坐標系,模型坐標系)

每個物體都有其獨立的物體坐標系,并且隨物體進行相同的移動或者旋轉。
局部坐標系:是相對于父物體來說也就是當兩個游戲對象互為父子關系,那么子物體會以父物體的坐標點為自身的坐標原點。


局部坐標系

下面我們來看看我們的局部坐標和全局坐標的不同吧。首先我們將腳本掛載在子物體上,然后在腳本上寫上我們的代碼輸出坐標。


Paste_Image.png
我們再來看看打印結果吧
打印值
我們我們怎么獲取到子物體的局部坐標呢?
獲取局部坐標

我們再看看其打印結果看是否正確


打印結果

三、相機坐標系:

根據觀察位置和方向建立坐標系。(UGUI會詳細講述)
使用次此坐標可以方便判斷物體是否在相機前方,以及物體間的先后遮擋順序,它會優先渲染離他最近的物體。
它會優先渲染離他最近的物體。


相機坐標

四、屏幕坐標系:Screen Space

建立在屏幕上的二位坐標系,用來描述像素在屏幕上的位置。(像素在補充課件里面)以像素定義,以屏幕左下角為坐標原點(0,0),
右上角為(Screen.width,Screen.height),Z的位置是以相機的世界坐標位置來衡量的。
在我們手機、電腦都是有屏幕的,它的左下角就是屏幕坐標的原點。當然我們的屏幕坐標是二維的只有X,Y軸

屏幕坐標
現在我們來寫一個事件測試下,點擊屏幕的某一個位置就會顯示屏幕的坐標位置。首先我們創建一個腳本讓其掛載在攝像機上,然后開始寫代碼。
Paste_Image.png
保存后我們再來看看結果。
打印結果
然而我們怎么世界坐標轉換成屏幕坐標呢?
世界坐標→屏幕坐標
camera.WorldToScreenPoint(obj.transform.position)
下面我們來看看如何使用吧,首先我們給攝像機掛載一個腳本,然后開始寫我們的代碼。
Paste_Image.png
然后來看看打印結果吧
打印結果

其他坐標系之間的轉換

坐標系的轉換:
1、局部坐標系轉換到全局坐標系:
Transform.TransformPoint()
首先我們創建一個腳本讓其掛載在我們的子物體上。

局部坐標
打印結果:
打印結果

全局坐標系轉換到局部坐標系:
Transform.InVerseTransformPoint()
首先我們創建一個腳本讓其掛載在我們的子物體上。
Paste_Image.png

打印結果:
打印結果

向量如何轉為局部坐標系呢?
Transform.TransformDirection

Paste_Image.png

向量如何轉為全部坐標系呢?
Transform. InVerseTransformDirection

Paste_Image.png

五、View port Space 視口坐標

視口坐標是標準的和相對于相機的。相機的左下角為(0,0)點,右上角為(1,1)點,
Z的位置是以相機的世界單位來衡量的。
屏幕坐標→視口坐標
camera.ScreenToViewportPoint(Input.GetTouch(0).position)
世界坐標→視口坐標
camera.WorldToViewportPoint(obj.transform.position));

六、GUI界面坐標系

這個坐標系與屏幕坐標系相似,不同的是該坐標系以屏幕的左上角為(0,0)點,右下角為(Screen.width,Screen.height)。
print("世界坐標" + obj.transform.position);
print("屏幕坐標" + Input.GetTouch(0).position);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 什么是3D坐標系? 3D坐標系是3D游戲開發與VR開發中的基礎概念。一般而言3D坐標系都是使用的笛卡爾坐標系來描述...
    困卡閱讀 678評論 1 1
  • 3D坐標系是在做3D項目開發中的基礎概念,一般來說3D軟件或者開發工具都是采用笛卡爾坐標系來描述物體的坐標信息。笛...
    S_H_C閱讀 6,446評論 0 6
  • 一、Unity3D中有哪些坐標系? 坐標系這個概念最早是由法國數學家笛卡爾提出的,并由此創造了用代數方法來研究幾何...
    OneMore2018閱讀 4,607評論 0 7
  • 笛卡爾坐標系的定義 :1、每個2D笛卡爾坐標系都有一個特殊的點,稱為原點(0,0)它是坐標系的中心。2、每個2D笛...
    好怕怕閱讀 3,424評論 3 8
  • 問題 3ds Max直接導出的FBX導入到Unity3D里,會發現x軸旋轉度為-90,如下圖所示: 解答 這是因為...
    Jenson生閱讀 5,075評論 1 4