unity座標轉變問題

來源:互聯網
上載者:User

標籤:blog   使用   os   io   for   2014   ar   問題   

unity最常用的幾種座標,螢幕座標,全局座標,ngui座標,相對於父物體的座標(localPoisition)。

但是有時候這幾種座標相互轉換何其困難,讓自己狠抓頭。不得不操作的方式是建立虛擬體,然後來回改變他的父節點(parent),

不過unity提供了兩個方法挺好用的。解決了所有座標轉換問題,

InverseTransformPoint: 絕對座標轉相對座標,也就是全局座標轉你想要放到的父節點下的相對座標,

TransformPoint: 相對座標轉絕對座標,也就是你想要放到的父節點下的相對座標轉成全局座標,

調用方法就是,比如你想把滑鼠點擊的位置轉換成你某一個父節點下的ngui座標。

操作如下

                Vector3 vec = new Vector3();Ray ray=UICamera.mainCamera.ScreenPointToRay(Input.mousePosition);// 向螢幕發射線RaycastHit hit;if(Physics.Raycast(ray,out hit)){vec = 你想轉到的父節點物體.transform.InverseTransformPoint(hit.point);}

這樣就得到了一個螢幕點擊轉向ngui的父節點的相對座標,其他的物體也是用此類方法使用,

這樣保證了操作座標的流暢性,不用建立那麼多的虛擬體,

當然相對座標轉絕對座標也一樣的用法,不用建立虛擬體,你想把某一個父節點下的相對於這個父節點的某一個位置轉成全局座標跟上邊一樣的用法,

你當前的父物體.transform.TransformPoint(相對於該父物體的位置);

這樣就可以轉成全局座標,全局座標通用情境所有物體,想做什麼就可以做什麼了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.