Unity3D的NGUI实现血条跟随功能

初学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游戏哈哈,虽然做得很粗糙,但是学到了很多)

这里写图片描述



网上的资料很多很杂,通过自己学习、实践、试错,最后才能整理出一个适合自己的方法。写博客意在分享自己的学习经历。
抱拳了~老铁们!= ̄ω ̄=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值