天天看點

Unity3D坐标轉換

轉載自:http://blog.csdn.net/itolfn/article/details/38443311

unity最常用的幾種坐标,螢幕坐标,世界坐标,ngui坐标,相對于父物體的坐标(localPoisition)。

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

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

InverseTransformPoint: 絕對坐标轉相對坐标,也就是世界坐标轉你想要放到的父節點下的相對坐标,

TransformPoint: 相對坐标轉絕對坐标,也就是你想要放到的父節點下的相對坐标轉成世界坐标,

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

操作如下

[csharp]  view plain copy

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

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

這樣保證了操作坐标的流暢性,不用建立那麼多的虛拟體,

當然相對坐标轉絕對坐标也一樣的用法,不用建立虛拟體,你想把某一個父節點下的相對于這個父節點的某一個位置轉成世界坐标跟上邊一樣的用法,

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

這樣就可以轉成世界坐标,世界坐标通用場景所有物體,想做什麼就可以做什麼了

繼續閱讀