初学Unity3D,碰到很多问题,也走了很多弯路。最近做的一个安卓版的RPG小游戏,用到了敌人血条跟随功能。在网上查了很多资料,最后整理出了一个我觉得挺简单的方法。(第一次写博客,我不知几脸懵逼,有点小激动^_^)。
NGUI下实现血条跟随功能
1、首先要做好血条。在网上听说直接用UISprite做更方便,通过控制UISprite的FillAmount来更新血量信息。
将Filp设置为水平就可以了,拖动Fill Amount会看到跟UISlider一样的效果。最后将血条做成一个Prefab。
2、在血条跟随的游戏物体上,创建一个空的GameObject作为子物体。这个的位置用于实例化血条,所以调整其位置在游戏物体上方一点(游戏中一般血条都在头顶)。然后在上面添加一个脚本来控制。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyHP : MonoBehaviour
{
public GameObject prefab;//血条的Prefab
public GameObject hud;//实例化出来的血条
private float Fomat;//主摄像机到当前位置的距离
Vector3 pos;
void Start()
{
pos = transform.position;
hud = GameObject.Instantiate(prefab, pos, Quaternion.identity) as GameObject;//实例化血条
Fomat = Vector3.Distance(pos, Camera.main.transform.position);
hud.SetActive(false);//血条默认不显示,为了节约性能
}
void Update()
{
if (hud)
{
hud.transform.position = WorldToUI(transform.position);//转换坐标
}
}
public Vector3 WorldToUI(Vector3 point)
{
Vector3 pt = Camera.main.WorldToScreenPoint(point);//将世界坐标转换成屏幕坐标
pt.z = 0;
Vector3 ff = NGUITools.FindCameraForLayer(hud.layer).ScreenToWorldPoint(pt);//将屏幕坐标转换成NGUI坐标
return ff;
}
}
代码还是挺简单的,由此实现了血条跟随功能,希望有大神来批评指正。(下图是我的第一个RPG游戏哈哈,虽然做得很粗糙,但是学到了很多)
网上的资料很多很杂,通过自己学习、实践、试错,最后才能整理出一个适合自己的方法。写博客意在分享自己的学习经历。
抱拳了~老铁们!= ̄ω ̄=