UGUI专题

游戏血条逐渐减少实现

2021-03-12  本文已影响0人  紫龙大侠

那天有人问我游戏人物血条如何慢慢减掉。今天写一下吧。首先上个动态图,看效果:

更多内容请关注微公号:unity风雨路

在之前的文章中讲过如何实现技能冷却的效果(上图中技能冷却效果),血条的慢慢减小原理和技能冷却的是一样的。

下面是具体步骤: 

1.首先先新建一个scrollbar 作为血条,然后把 Handle的颜色改成红色,并且把ImageType改成Filled.,把填充方式改成水平的(见下图:)

2.然后开始用脚本控制血条

我脚本绑定的位置是技能冷却的图片,然后把Handle拖到指定位置(如下图:)

技能冷却代码和血条渐渐减小代码如下

(代码中写了详细的注释这里不再赘述):

using UnityEngine;

using System.Collections;

using UnityEditor;

using UnityEngine.UI;

public class skillcd : MonoBehaviour

{

    public Image hps;

    private Image spcd;

    private bool cooling, hpstart;

    private float hurt = 0.2f, all = 1;

    // Use this for initialization

    void Start()

    {

        hps.fillAmount = 1f;//血量

        spcd = this.GetComponent<Image>();//获取组件方法

        spcd.fillAmount = 0;//冷却值

    }

    // Update is called once per frame

    void Update()

    {

        if (cooling == false && Input.GetKeyDown(KeyCode.R))//放技能

        {

            hpstart = true;

            spcd.fillAmount = 1f;

            cooling = true;//冷却条件

        }

        if (cooling)

        {

            spcd.fillAmount -= 0.2f * Time.deltaTime;

            if (spcd.fillAmount < 0.01f)//冷却完毕

            {

                spcd.fillAmount = 0;

                cooling = false;

            }

        }

        //血量逻辑开始

        if (hpstart)

        {

            Debug.Log("血量:" + hps.fillAmount);

            hps.fillAmount = (hps.fillAmount -= 0.1f * Time.deltaTime) * hps.fillAmount / (hps.fillAmount);

            if (hps.fillAmount <= (all - hurt))//当前血量值 小于等于 目标血量值

            {

                Debug.Log("ting");

                hpstart = false;

                all = hps.fillAmount;//总血量值 被赋值 当前血量值

            }

            Debug.Log("血量2:" + hps.fillAmount);

        }

    }

}

就这样就实现了这个功能,So Easy!

————————————————

版权声明:本文为CSDN博主「紫龙大侠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/alayeshi/article/details/70738126

上一篇 下一篇

猜你喜欢

热点阅读