NGUI做角色HUD血条

2015年02月02日 13:23 0 点赞 0 评论 更新于 2017-05-09 13:06

今天我们来探讨如何使用NGUI制作游戏中的角色HUD血条,并且自己动手实践一下。

之前在做游戏demo时,我需要用到HUD血条,从网上查找资料,发现有用的信息寥寥无几。后来我使用雨松大大的GUI方法实现了血条,但由于GUI是渲染在顶层的,不会被物体遮挡,这并非我想要的效果。经过不断摸索,我终于用NGUI实现了HUD血条的制作方法,现在将其分享给大家。

一、准备场景

首先,准备好你的场景,其中应包含角色、地形、摄像机和灯光。

1. 设置摄像机目标

给摄像机添加一个Look At Target脚本,并将其Target设为人物。这样摄像机就会始终看向人物。

2. 实现摄像机绕人物旋转

我们需要自己编写一个脚本CameraRound,并将其挂载到摄像机上,让摄像机绕着人物旋转。以下是脚本代码:

using UnityEngine;
using System.Collections;

public class CameraRound : MonoBehaviour {
public GameObject hero;

void Update () {
gameObject.transform.RotateAround(hero.transform.position, Vector3.up, 0.1f);
}
}

在上述代码中,hero是我们要围绕旋转的人物对象,RotateAround方法用于实现摄像机绕人物旋转的功能。

二、制作血条

准备好场景之后,我们就可以开始实现血条的制作了。

1. 创建空对象

生成一个空对象,并调整其位置在角色正下方。这个空对象将作为血条的父物体。

2. 添加Panel

接着,添加一个Panel作为这个空对象的子物体。这里需要使用NGUI插件。Panel是NGUI中用于管理UI元素的容器。

3. 添加UI信息

接下来就是往Panel上添加信息了。由于具体的添加操作较为复杂,这里我就不详细讲解了,具体请自行查阅NGUI手册。我在Panel上添加了一个血条和一个Label(用于显示名称等信息),血条使用Simple Texture制作。

4. 配置血条和Label

给血条添加图片,在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应该为人物的位置到摄像机位置的向量,否则信息栏会出现偏差。
}
}

在上述代码中,_bloodBar是我们创建的血条对象,MainCamera是主摄像机对象。在Update方法中,我们首先将血条的位置设置在人物头顶某处,然后计算人物到摄像机的向量v,并根据这个向量计算旋转角度,最后将血条的旋转角度设置为计算得到的旋转角度,从而实现血条始终面向摄像机的效果。

四、测试运行

运行游戏,不管摄像机如何旋转,血条总是面向摄像机。至此,使用NGUI制作角色HUD血条的任务大功告成!

作者信息

feifeila

feifeila

共发布了 570 篇文章