先上效果圖,只憑文字描述,腦補應該有些困難- -
如圖:有三個角色(我們暫且從左到右叫它們A、B、C),一個2D UI(中間動作選擇的框框),一個cube(右邊的方塊)
更多精彩請關注【狗刨學習網】
cube擋住了角色C的頭頂信息
2D UI擋住了角色和cube
共同點是隻顯示未被遮擋的部分,遮擋的部分不顯示
相信大多數人在看我這篇文章之前已經看過雨松momo的《人物頭頂名稱與血條更新與繪製》
如果直接使用雨松momo文章中的代碼的話,那麼你會發現有一些問題,如圖
這裏我沒有用血條,只繪製了文字,都一樣的!
第一:因爲是用OnGUI繪製的,所以使用的過程之中角色暱稱和血條會擋住NGUI創建的UI。你可以腦補一下當你打開揹包時,一排文字和血條擋住了你的揹包。。。
第二:當角色被其他物體遮擋時,這裏我說的是3D物體,不是UI。怎麼說比較好理解呢!!就好比角色走到了牆後面,角色已經被牆遮擋住了,但是角色暱稱和血條依舊顯示(或許有一些人就要這種效果!好吧,至少在我的項目中這種效果給我的感覺是非常差的)
第三:當同一個場景出現兩個角色時,兩個角色都有自己的暱稱和血條,如果你和另個角色距離太遠且旋轉了角度時,名稱和血條居然奇蹟的出現在了天上!沒錯,就是天上
......以上所述只是指出一些bug,並沒有多餘的意思,大家勿噴,我也是菜鳥,只是和大家分享下經驗!!
雨松momo的寫這篇文章的目的也就是給大家一個思路,具體在項目中怎麼實現成預想效果得靠自己了
這個思路挺好,但是由於一些我自身項目的原因就暫且不用這個思路,這個思路大家可以去看看,以後肯定能用到
現在用另外一種思路實現,這裏我們要學到一個東西:Layer(層)
關於layer的介紹請看聖典:http://game.ceeger.com/Components/Layers.html
其實我自己也沒有看過,爲了寫這篇文章纔去搜的,自己沒事的時候瞎點點就知道是幹嘛的了
因爲我們要用到NGUI,所以先導入NGUI插件包
進入正題:
1、創建一個空GameObject,改名爲NamePanel,設爲角色子物體,然後Reset並且調整位置到角色頭頂位置
2、將NamePanel的Layer設置和角色同一個層,並且添加一個UIPanel
3、在NamePanel下添加UILabel,方法爲:選中NamePanel->NGUI->Create->Label,並且將Label
Overflow屬性設置爲ResizeFreely(自動適應文字大小以及長度的)
4、設置UILabel組件的屬性。字體、顯示文字、字體顏色。Effect選擇OutLine,顏色選擇爲黑色,這個參數是描邊的,讓字體更清晰
咦,搞毛啊,字體怎麼這麼大啊?把字體修改小一點,10、5、1,尼瑪怎麼還是這麼大,而且還看不清了
別急別急,不是你操作錯誤,是還沒操作完!
我一開始遇到這個問題的時候我也納悶了,後來想了想,有可能是沒有添加UIRoot的原因
用過NGUI的都知道,UIRoot是NGUI必不可少的一部分,在手機上自適應分辨率就靠它了
那既然知道原因了,我們就添加一個UIRoot試試唄
5、選擇NamePanel,添加一個UIRoot組件,Scaling Style選擇FixedSizeOnMobiles
哈哈,字體恢復正常了!如果感覺字體比較小,可以在把字體調大一些
運行遊戲,你會發現角色移動的時候,頭頂信息雖然跟隨角色了,但是角色旋轉或相機旋轉的時候,頭頂信息旋轉面向攝像機。如果你就想這樣,那是大大滴不行的,不能圖方便就少了代碼
現在我們來寫代碼,代碼很簡單
保存代碼,將腳本掛到角色上,然後把NamePanel拖到參數targets
最後運行遊戲,在看看效果,ok,完美
最後總結一下:
代碼上是非常簡單的,看我代碼就知道了,可以說就只有一句代碼。。。
主要就是設置層,層一定要分清楚,很重要!
|
unity3d 角色頭頂信息3D&2D遮擋解決方案(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.