uGUI元素顯示在角色的頭頂上,ugui元素角色頭頂

來源:互聯網
上載者:User

uGUI元素顯示在角色的頭頂上,ugui元素角色頭頂

孫廣東 2015.5.26

轉載請註明出處:http://blog.csdn.net/u010019717

我們 遊戲完全使用UGUI來工作,所以遊戲中的很多元素都是UGUI的 Game Canvas畫布設定為;World Space , 主要也是為了以後一下牛叉的效果

還有一個UI Canvas畫布設定為;Screen Space - Overlay 就是這些元素會在最前方,在螢幕上的。

還有一組是:Spines Layer, 主要是放著spine製作的角色


2種解決方案:

第一種是 為角色建立子物件了類型是Canvas畫布,Unity的官方案例是這麼做的,可以自己去看看。這樣在Hierarchy上是有上下級的層級關係的。

這種的話,Canvas的類型最簡單是設定為:Screen Space - Overlay



第二種呢,其實也很簡單,就是我得到角色的位置position, 然後轉換為螢幕座標系,然後在轉換為UGUI所在畫布和相機的座標系即可,得到了這個就賦值給UI即可了。但是這樣在Hierarchy上是沒有上下級的層級關係的。一個屬於Game Canvas畫布,一個在Spines Layer中,但是角色會有UI的引用。

     Vector3 first = ExploreBattleManager.Instance.MainCamera.GetComponent<Camera>().WorldToScreenPoint(transform.position); //把角色在主攝像機的全局座標轉化為螢幕座標[註:first的結果的z值是原來全局座標的z]     first = new Vector3(first.x, first.y, 100);// 設定這個z的意思是想讓角色的位置映射到UICamera的多遠距離的平面上。 這裡我們希望映射到Game Canvas畫布相對於相機的距離,怎麼看?如果是Screen Space - Camera的話就是如的Plane Distance值了。  如果是World Space :值就是兩個z值的差了:     skillList.transform.position = ExploreBattleManager.Instance.UICamera.GetComponent<Camera>().ScreenToWorldPoint(first);


              



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.