Unity中的幾種座標系

    在不同的情況下使用不同的座標系更加方便,所以在Unity中有多種座標系:

  1. 全局座標系 World Coordinate System
  2. 局部座標系 Local Coordinate System
  3. 屏幕座標系 Screen Space
  4. 視口座標系 ViewPort Space

全局座標系

    全局座標系是用於描述場景內所有物體位置的方向的基準,也稱爲世界座標系。
    在Unity中創建的物體都是以全局座標系中的座標原點(0,0,0),來確定各自的位置的。
    可以使用transform.position來獲取遊戲對象的世界座標。

局部座標系

    局部座標系也稱爲模型座標系或物體座標系。
    每個物體都有自身獨立的物體座標系。當物體移動或改變方向時,和該物體相關聯的座標系將隨之移動或改變方向。
    模型Mesh保存的頂點座標均爲局部座標系下的座標。

本地座標

    transform.localPosition(本地座標)可以獲得物體在父物體的局部座標系中的位置點。
    父子關係,子物體以父物體的座標點爲自身的座標原點。
    如果該遊戲物體沒有父物體,那麼    transform.localPosition獲得的依然是該物體在全局座標系中的座標。
    如果該物體有父物體,則獲得是在其父物體的局部座標系中的座標。
    檢視視圖中顯示的爲localPosition的值。

屏幕座標系

    屏幕座標系是建立在屏幕上的二維座標系。
    以像素來定義的,屏幕的左下角爲(0,0),右    上角爲(Screen.width, Screen.height),z軸的座標是相機的世界座標中z軸座標的負值。
    鼠標位置座標屬於屏幕座標,通過Input.mousePosition可以獲得該位置的座標。
    手指觸摸屏幕也爲屏幕座標,Input.GetTouch(0).position可以獲得單個手指觸摸屏幕時手指的座標。

視口座標系

    視口座標系是將Game視圖的屏幕座標系單位化,左下角(0,0),右上角(1,1)。z軸的座標是相機的世界座標中z軸座標的負值。

座標系之間的關聯與相互轉換

全局座標系和局部座標系

    關聯:
    transform.Translate(translation:Vector3, relativeTo: Space = Space.Self);
沿着translation的方向移動|translation|的距離,其結果將應用到relativeTo座標系中。如果relativeTo爲空,則默認爲局部座標系。
    轉換:
    Transform.TransformPoint(Vector3 position) :將一個座標點從局部座標系轉換到全局座標系。
    Transform.InverseTransformPoint(Vector3 position):將座標點從全局座標系轉換到局部座標系。
    Transform.TransformDirection(Vector3 direction):將一個方向從局部座標系轉換到全局座標系。
    Transform.InverseTransformDirection(Vector3 direction):將一個方向從全局座標系轉換到局部座標系。
    Transform.TransformVector(Vector3 vector):將一個向量從局部座標系轉換到全局座標系。
    Transform.InverseTransformVector(Vector3 vector):將一個向量從全局座標系轉換到局部座標系。
    其他:
    Transform.forward, Transform.right, Transform.up:當前物體的物體座標系的z軸,x軸,y軸在世界座標系上的指向。
    Vector3.forward ,(0,0,1)的縮寫。在transform.Translate()中使用時,如果不表明座標系,則爲物體的局部座標,即物體自身的正前方。
    Vector3.right,(1,0,0)的縮寫。
    Vector3.up ,(0,1,0)的縮寫。

屏幕座標系與全局座標系

    轉換:
    Camera.ScreenToWorldPoint(Vector3 position): 將屏幕座標轉換爲全局座標。
    Camera.WorldToScreenPoint(Vector3 position):將全局座標轉換爲屏幕座標。
Input.mousePosition:獲得鼠標在屏幕座標系中的座標。

屏幕座標系與視口座標系

    轉換:
    Camera.ScreenToViewportPoint(Vector3 position):將屏幕座標轉換爲視口座標。
    Camera.ViewportToScreenPoint(Vector3 position):將視口座標轉換爲屏幕座標。

全局座標系與視口座標系

    轉換:
    Camera.WorldToViewportPoint(Vector3 position):將全局座標轉換爲視口座標。
    Camera.ViewportToWorldPoint(Vector3 position):將視口座標轉換爲全局座標。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章