[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

留言

這個網誌中的熱門文章

angular 如何Http 如何設定 CORS (Cross-Origin Resource Sharing)

Google Map 單車路徑計算坡度和角度小工具

Google URL Shortener API 快速教學