Unity塔防游戏学习(七)

本文介绍了如何在Unity中制作并实现3D塔防游戏中敌人的生命条。通过创建Slider UI控件,调整Canvas的Render Mode为World Space,并添加背景和填充图片。同时,隐藏滑块并将生命条Prefab保存到Resources目录。最后,通过添加Enemy.cs代码,实现了生命条的运行效果。
摘要由CSDN通过智能技术生成

生命条

为了能够更加直观的观察敌人的生命值,我们制作一个生命条在每个怪物的正上方。

1、生命条Prefab

1、这里采用的是使用UI控件中的Slder控件实现生命条。创建Slider控件。
在这里插入图片描述
2、重命名Canvas为Canvas3D。
在这里插入图片描述
3、将Canvas的Render Mode设置为Word Space。使这个UI成为一个3D的控件。
在这里插入图片描述
3、在Slider中的background添加图片。图片必须使Sprite格式。
在这里插入图片描述
4、在Slider中的Fill Area添加图片。图片必须使Sprite格式。
在这里插入图片描述
5、把滑块隐藏
在这里插入图片描述
6、将其制作成Prefab,并添加到Resources目录下,命名为Canvas3D。
在这里插入图片描述

2、添加代码

1、添加Enemy.cs代码如下:

void Start()
{
    GameManager.instance.m_enemyList.Add(this);

    //读取生命条prefab
    GameObject go = Resources.Load<GameObject>("Canvas3D");
    //创建生命条,将当前的Transform设置为父物体
    m_lifeBar = ((GameObject)Instantiate(go, this.transform.position, Camera.main.transform.rotation, this.transform)).transform;
    //设置位置,和大小
    if (this.transform.name.CompareTo("boar(Clone)") == 0)
    {
        m_lifeBar.localPosition = new Vector3(0, 120.0f, 0);
        m_lifeBar.localScale = new Vector3(1.0f, 2.0f, 1.0f);
    }
    else if(this.transform.name.CompareTo("bird(Clone)") == 0)
    {
        m_lifeBar.localPosition = new Vector3(0, 1.3f, 0);
        m_lifeBar.localScale = new Vector3(0.01f, 0.02f, 0.01f);
    }
    m_lifeObj = m_lifeBar.GetComponentInChildren<UnityEngine.UI.Slider>();
    //更新生命值
    StartCoroutine(UpdateLifebar());
}

//协程更新滑动条
IEnumerator UpdateLifebar()
{
    //更新生命条的值
    m_lifeObj.value = (float)m_life / (float)m_maxLife;
    //更新角度,始终面向照相机
    m_lifeBar.transform.eulerAngles = Camera.main.transform.eulerAngles;
    //没有任何等待
    yield return 0;
    //循环执行
    StartCoroutine(UpdateLifebar());
}

运行效果:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值