pstatus"> 本帖最后由 雅雅 于 2013-7-16 20:02 编辑 之前做游戏demo的时候要用到HUD血条,从网上找资料,基本没有多少有用的信息,后来用雨松大大的GUI方法实现了,但是由于GUI是渲染在顶层的,不会被物体遮挡,并不是我想要的效果。经过摸索,终于用NGUI实现了HUD血条的做法,现在分享给大家~~ ▼首先准备好你的场景(角色,地形,摄像机,灯光) 给摄像机添加一个Look At Target脚本,并将其Target设为人物。 接着自己写一个脚本Camera Round,拖给摄像机,让摄像机绕着人物旋转。 using UnityEngine; using System.Collections; public class cameraRound : MonoBehaviour { public GameObject hero; void Update () { gameObject.transform.RotateAround(hero.transform.position,Vector3.up,0.1f); } } 准备好场景之后,我们就来开始实现血条的制作咯~ ▼首先,生成一个空对象,并调整其位置在角色正下方。 ▼接着我们添加一个panel作为这个空对象的子物体。(需要NGUI插件) ▼接下来就是往panel上添加信息了这里我就不细讲了,具体请自行查阅NGUI手册 ▼这里我添加了一个血条和label(用来显示名称等信息)(血条用simple Texture做) 然后给血条加上图片,label里输入人物的名称,调整他们的位置 接下来就是很重要的代码部分了。 给人物添加一个脚本,命名为blood_bar。 using UnityEngine; using System.Collections; public class blood_bar : MonoBehaviour { public GameObject _bloodBar;//获取血条信息。 public GameObject MainCamera;//获取主摄像机 void Update () { _bloodBar.transform.position=new Vector3(transform.position.x,transform.position.y+2.0f,transform.position.z);//让血条信息一直处于人物的头顶某处 Vector3 v=transform.position-MainCamera.transform.position; Quaternion rotation; rotation = Quaternion.LookRotation(v); _bloodBar.transform.rotation = rotation;//让血条一直面向摄像机。由于摄像机是以人物为目标的,所以v应该为人物的位置到摄像机位置的向量,否则信息栏会出现偏差。 } } ▼运行游戏, 不管摄像机怎么旋转,血条总是面向摄像机。大功告成~ 本文章由末日小生发表在http:// |
|