在游戲當中,人物的血條是必不可少的。現在我就來講講如何制作吧(用到NGUI了,在此NGUI的使用方法我就不多講了)。為了激發大家的興趣,我先上傳幾張圖片show下吧。
............
..........
看看,效果還行吧。我先講講思路吧。
1.讓血條和名字跟着人物,並且在人物上方。要實現這樣的效果,我們就可以以人物為參照物就可以,在人物的基礎上再加上一段距離就可以。
2.當人物旋轉方向的時候還要血條一直朝着攝像機,只是人物會有移動的表現,而血條確沒有轉動的表現,要實現這個效果,我們可以用unity封裝好了的LookRotation()方法,我試過LookAt()這個方法,覺得還是不行,有點小問題。
我覺得就是這2個難點。其他的沒什么難點了。具體實現如下:
1。創建一個空物體,再在其下創建一個Panel(不創建這個是在主攝像機顯示不出來的,也即是沒有NGUI中的UI Root (2D)這些下面的重要顯示條件),作為子物體。我們再在Panel下面創建一個Label用來顯示我們的名字,再創建一個Progress Bar,作為顯示血條的。如圖:
(注:創建地形啊,燈光啊這些我就不說了,我用的人物就是unity里面自帶的那個,這個我也不多講了,我的整個工程就是上面那幾個物體)。
好了,現在該我們用腳本控制了。上次我總結了個攝像機跟隨人的總結,大家可以看看那里的腳本,在此說下,用unity里面的那個第三視角的那個自帶的相機跟着人物的腳本效果不好,這個就是因為那個自帶的腳本是始終對着人物背后的。我改進了下上次的相機跟着人物的腳本,如下:
using UnityEngine; using System.Collections; public class Follow : MonoBehaviour { public Transform character; //攝像機要跟隨的人物 public float smoothTime = 0.01f; //攝像機平滑移動的時間 private Vector3 cameraVelocity = Vector3.zero; public Vector3 offset; //攝像機坐標離人物的坐標差值 void Update() { transform.position = Vector3.SmoothDamp(transform.position, character.position + offset, ref cameraVelocity, smoothTime); } }
然后將這段代碼托給攝像頭.我修改它們的坐標值如下,並將人物拖進了character。
現在我們來用腳本控制血條和名字了. 腳本如下:
using UnityEngine; using System.Collections; public class Blood : MonoBehaviour { public GameObject bloodBar;//獲取血條信息。 public GameObject MainCamera;//獲取主攝像機 public Vector3 offset; //血條和人物坐標的差值,也就是血條在人物的上中方...之類的.這樣理解 // Use this for initialization void Start () { } // Update is called once per frame void Update () { //讓血條信息一直處於人物的頭頂某處 bloodBar.transform.position=transform.position+offset; Vector3 relativePos = transform.position - MainCamera.transform.position; Quaternion rotation = Quaternion.LookRotation(relativePos); bloodBar.transform.rotation = rotation; //bloodBar.transform.LookAt(MainCamera.transform.position); } }
我們就將這段代碼給托人物.並且設置如下:
好了,我們運行吧,測試下,效果還行吧.