unity 螢幕座標 滑鼠座標 ui座標 世界座標詳解
介紹
unity 總共有四種座標:
1,滑鼠所在的螢幕座標,只包含x,y值,資料型別是vector2
2,ui座標,在canvas中的ui座標。資料型別是vector3
3,世界座標,三維世界座標 資料型別是vector3
Unity3D的四種座標系
【Unity3D的四種座標系】
1、World Space(世界座標):我們在場景中新增物體(如:Cube),他們都是以世界座標顯示在場景中的。transform.position可以獲得該位置座標。
2、Screen Space(螢幕座標):以畫素來定義的,以螢幕的左下角為(0,0)點,右上角為(Screen.width,Screen.height),Z的位置是以相機的世界單位來衡量的。注:滑鼠位置座標屬於螢幕座標,Input.mousePosition可以獲得該位置座標,手指觸控式螢幕幕也為螢幕座標,Input.GetTouch(0).position可以獲得單個手指觸控式螢幕幕座標。
Screen.width = Camera.pixelWidth
Screen.height = Camera.pixelHeigth
3、ViewPort Space(視口座標):視口座標是標準的和相對於相機的。相機的左下角為(0,0)點,右上角為(1,1)點,Z的位置是以相機的世界單位來衡量的。
4、繪製GUI介面的座標系:這個座標系與螢幕座標系相似,不同的是該座標系以螢幕的左上角為(0,0)點,右下角為(Screen.width,Screen.height)。
【四種座標系的轉換】
1、世界座標→螢幕座標:camera.WorldToScreenPoint(transform.position);這樣可以將世界座標轉換為螢幕座標。其中camera為場景中的camera物件。
2、螢幕座標→視口座標:camera.ScreenToViewportPoint(Input.GetTouch(0).position);這樣可以將螢幕座標轉換為視口座標。其中camera為場景中的camera物件。
3、視口座標→螢幕座標:camera.ViewportToScreenPoint();
4、視口座標→世界座標:camera.ViewportToWorldPoint();
滑鼠拖拽ui,不能直接使用position賦值。需要通過相機轉換。