[Unity] 如何把手指點擊座標換成Unity UI 的座標
// 先捉取螢幕座標
Vector3 screenPos = Input.mousePosition;
//轉換成空間中做邊(Unity 有提供轉換的方法)
Vector3 worldPos = Camera.main.ScreenToWorldPoint(screenPos);
//取得欲轉換到某Unity UI 元件的 transform
Transform t = transform; /*{取得某UI 元件的 transform}*/
//透過矩陣運算得其座標
Vector3 uiPos = t.worldToLocalMatrix.MultiplyVector(worldPos);
// 如果要把Ui中的座邊換成原本的座標,就乘上其反矩陣
Vector3 orgPos = t.worldToLocalMatrix.inverse.MultiplyVector(uiPos);
Debug.Log("worldPos="+ worldPos+ " orgPos="+ orgPos);
//或是利用 localToWorldMatrix(其實這個就是反矩陣)
Vector3 orgPos2 = t.localToWorldMatrix.MultiplyVector(uiPos);
Debug.Log("worldPos=" + worldPos + " orgPos2=" + orgPos2);
PS
上述的 Log worldPos 應該就是等於 orgPos2和 orgPos
留言
張貼留言