低調の美國生活

各種疑難雜症

Unity:將3D坐標轉成2D坐標的方法

x425
7月10日2012年

正常來說 大家都想把2D變3D 但有時就是沒辦法啊…


基本觀念

3D坐標在Unity中稱作World Space

2D坐標稱作Screen Space, 是以pixel為基準

以iPad 1024 x 768(4:3)的解析度為例子

  • 左上角是 (0,0)
  • 右下角是(1024,768)

 

功能製作:點擊畫面中的3D方塊 然後在該方塊的中心位置產生相對應的GUI

主要是應用此功能: camera.WorldToScreenPoint ();

將以下的JavaScript加在Camera物件下

  1. Raycast點擊設定:讓你可以用滑鼠(PC)/手指(iPad, mobile devices)做點擊測試
  2. 用”tower”標籤名稱來區隔不同的3D物件
  3. 用此功能取得所點擊的3D物件的x,y,z坐標(world space) 然後再透過camera.WorldScreenPoint()轉換成screen space的2D坐標
  4. 然後我們利用所獲得的2D坐標 將UI產生在設備螢幕的相對應位置上 *注意:y的坐標是要用設備螢幕的Height減去所獲得的物件y坐標

結果示範

點中間的方塊 UI就產生在中間 點左上的方塊 UI就產生在左上

應用:Tower Defense遊戲中 點擊畫面中的物件 >然後賣出或升級


發佈於 7月10日2012年