1. 程式人生 > >unity3d學習筆記(十九)--ngui製作人物頭頂的頭像和血條

unity3d學習筆記(十九)--ngui製作人物頭頂的頭像和血條

本系列文章由Aimar_Johnny編寫,歡迎轉載,轉載請標明出處,謝謝。

http://blog.csdn.net/lzhq1982/article/details/18793479

先上張圖,自己做的一個demo。


這裡的人物頭像和血條是在3d世界生成的,所以有真正的縱深感和遮擋關係,廢話不多說,看我是怎麼實現的。

第一步,先在UI Root裡製作頭像和血條。

這個製作步驟基本和我前面一篇文章介紹頭像血條的製作步驟一致,下面我截個圖。


就是上面的HeroPanel,東西很簡單,建立一個主面板HeroPanel,然後在裡面建立一個Slider,用來顯示血條,再建立一個sprite,用來顯示頭像,我這裡還有一個sprite是頭像的背景框,然後調整位置和血條的顏色,不知道怎麼做的看我前面的頭像血條的文章,做完是這個樣子:


第二步,把頭像和血條做成prefab。

把上面製作的HeroPanel拖到Project的Resources資料夾下(Project->Assets->Resources),沒有Resources資料夾的自己建立一個,為了將來的載入。這樣就生成了HeroPanel的prefab,然後就可以把之前UI Root下的那個刪掉了。

第三步,進入程式。

上面的準備工作OK後,就是程式設計環節了。我的每個角色下掛了一個Npc指令碼,在Npc指令碼的Start里加載HeroPanel的prefab。

GameObject heroPanel = Resources.Load("HeroPanel") as GameObject;
_heroPanel = Instantiate(heroPanel, transform.position, transform.rotation) as GameObject;
_heroPanel.transform.localScale = new Vector3(0.006f, 0.006f, 0.006f);
_bloodSlider = _heroPanel.GetComponentInChildren<UISlider>();
_heroHeight = gameObject.collider.bounds.size.y;

上面程式碼很簡單,先是載入HeroPanel的prefab,然後生成例項_heroPanel,然後調整大小,這個一定要調成自己想要的大小,不然大的不忍直視啊,接著獲取裡面的UISlider指令碼,賦給變數_bloodSlider,後面用得到。如果想改變頭像圖片可以在這裡操作,我就不改了。最後獲取該角色的身高,用其碰撞盒獲取,後面Update裡計算座標用得到。

然後就是Update部分:

Vector3 pos = new Vector3(transform.position.x, transform.position.y+_heroHeight+HEAD_OFFSET, transform.position.z);
_heroPanel.transform.position = pos;
_heroPanel.transform.rotation = Camera.main.transform.rotation;

在Update裡要隨時獲得角色的座標,最重要的就是y座標,因為要放到角色頭頂上,所以這時就用到了前面的_heroHeight,後面又加了個HEAD_OFFSET,是偏移量,我這是1.0,然後把這個座標賦給_heroPanel,這樣頭像血條就跟著角色走了,但還有一點別忘了,就是它的朝向問題,你要時刻保持這個面板朝向攝像機,這就是第三句程式碼的作用。

好了,到這裡你已經實現了基本功能,很簡單吧,剩下的就是血條的slider了,這個和我前面介紹血條文章的用法一樣,在這裡就是改變_bloodSlider的value值,就是百分比,在這裡我就不介紹了。哈哈,打完收工。

相關推薦

unity3d學習筆記--ngui製作人物頭頂頭像

本系列文章由Aimar_Johnny編寫,歡迎轉載,轉載請標明出處,謝謝。 http://blog.csdn.net/lzhq1982/article/details/18793479 先上張圖,自己做的一個demo。 這裡的人物頭像和血條是在3d世界生成的,所以

Unity3D學習筆記使用外掛NGUI製作小地圖

原本只是想用Unity自帶的GUI功能實現魔獸世界的小地圖效果,結果折騰了一個晚上。原來的思路如下: 根據玩家座標,計算出應顯示的地圖縮圖部分(128×128); 用GUI遮罩將非白色的部分剔除(這樣可以實現任意形狀的小地圖); 將地圖框疊加到第二步中的紋理上; 將玩家指示

Python學習筆記

插入 imp 集合類 屬性 counter 以及 雙向 ror 簡單的 一、collections介紹   collections是Python中內建的一個集合模塊,提供了許多有用的集合類 二、namedtuple   namedtuple是一個函數,用來創建一個類似類的自

python學習筆記面向對象編程,類

時代 alt 類名 rst tps 玉溪 connect nbsp nco 一、面向對象編程 面向對象,是一種程序設計思想。 編程範式:編程範式就是你按照什麽方式去編程,去實現一個功能。不同的編程範式本質上代表對各種類型的任務采取的不同的解決問題的思路,兩種最重要的編程範式

Linux學習筆記文件壓縮

文件壓縮一、常見的壓縮文件 Windows .rar .zip .7z Linux .zip,.gz,.bz2,.xz,.tar.gz,.tar.bz2,.tar.xz文件壓縮可以節省內存,也可以節省傳輸速度 二、gzip首先創建了一個文件夾 /tmp/d6z/找了些比較大的文件寫入1.txt例如find

c++ primer第五版----學習筆記

部分習題解答: 19.1、19.2: #include <iostream> #include <cstdlib> using namespace std; void *operator new(size_t size) { cout << "new(

c++ primer第五版----學習筆記

文章目錄 ==特殊工具與技術== 1.控制記憶體分配 1.1 過載new和delete 1.2 定位new表示式 2. 執行時型別識別 2.1 dynamic_cast運算子 2.2 typeid運算子

機器學習筆記:TensorFlow實戰多執行緒輸入資料

1 - 引言 為了加速模型訓練的時間,TensorFlow提供了一套多執行緒處理輸入資料的框架。 下面我們來詳細的介紹如何使用多執行緒來加速我們的模型訓練速度 2 - 佇列與多執行緒 在TensorFlow中,佇列和變數類似,我們可以修改它們的狀態。下面給出一個示例來展示如

javaweb學習筆記:連線池

目錄 1.連線池概念 資料庫連線池(Connection pooling)是程式啟動時建立足夠的資料庫連線,並將這些連線組成一個連線池,由程式動態地對池中的連線進行申請,使用,釋放。 資料庫連線池的基本思想就是為資料庫連線建立一個“緩衝池”。預先在緩衝池

ESP32 學習筆記High Resolution Timer

文章目錄 高解析度定時器 概述 使用 `esp_timer` API 獲得當前時間 應用示例 API 參考 高解析度定時器 概述 雖然 FreeRTOS 提供軟體定時器,但這些定時器有

微信小程式學習筆記video視訊

<view class="section tc"> <video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/

機器學習筆記——最大熵原理模型定義

一、最大熵原理     最大熵原理是概率模型學習的一個準則。最大熵原理認為,在學習概率模型時,在所有可能的概率分佈中,熵最大的模型是最好的模型。通常用約束條件來確定概率模型的集合,所以,最大熵模型也可以表述為在滿足約束條件的模型集合中選取熵最大的模型。   

學習筆記

DATA: i1 TYPE i VALUE 2, i2 TYPE i VALUE 3. PERFORM add USING i1 i2. PERFORM add USING i1 i2. FORM add USING value(a) TYPE i valu

Java for Web學習筆記:Session3Session Listener

Session Listener 可以通過Listner來監聽session的變化,這就是所謂的publish and subscribe模型。這是一種訊息資訊釋出一方叫釋出者,資訊的接收方叫訂閱者,實際也是事件驅動的高大上說法,訂閱某個事件,然後觸發處理。這種方式最大的作用是將進行session變化以及s

VB.net學習筆記陣列、集合、泛型

變數、陣列、集合、泛型的發展            最開始用記憶體中一個位置對映一個值,用變數來“使用”這個值。            進一步發展,用變數來引用一組值,這就是陣列。由陣列概念,發展出連結串列、堆、棧,進行排序、檢索等。            但這並不能完

模式識別Pattern Recognition學習筆記--多層感知器模型MLP

       早前已經學習了感知器學習演算法,主要通過對那些錯分類的樣本進行求和來表示對錯分樣本的懲罰,但明顯的它是一個線性的判別函式;而且上節學到了感知器神經元(閾值邏輯單元),對於單個的感知器神經元來說,儘管它能夠實現線性可分資料的分類問題(如與、或問題),但是卻無法解

OpenCV2學習筆記:Kalman濾波演算法

在視訊跟蹤處理中,預測目標運動軌跡是一項基本任務。目標運動狀態估計的目的有三個:一是對目標過去的狀態進行平滑;二是對目標現在的運動狀態進行濾波;三是對目標未來的運動狀態進行預測。物體的運動狀態一般包括目標位置、速度、加速度等。著名的Kalman濾波技術就是其中一

Unity3D學習筆記:布料協程

tro 可執行 判斷 思考 update1 iat nco game 對象 延遲函數:動態資源加載:T:Resources.Load<T>(string path);Assets - Resources,Resources是一個資源管理的工具類,預制體放在Res

Unity3D學習筆記:Animator新動畫

新節點 false 溝通 遍歷 模型生成 for in pan dha motion 新動畫系統: 給模型選擇動畫類型 普通動畫:Generic 人形動畫:Humanoid 建立動畫控制器 - 在Project右擊 - 選擇Create-AnimatorContorlle

Unity3D學習筆記:IK動畫、粒子系統塔防

hpa 狀態 ram erl 代碼調整 tar 處理 rtu 需要 新動畫系統: 反向動力學動畫(IK功能): 魔獸世界(頭部動畫),神秘海域(手部動畫),人類一敗塗地(手部動畫) 如何啟用(調整) 1、必須是新動畫系統Animator 設置頭、手、肘的目標點 2、動畫