那天有人問我游戲人物血條如何慢慢減掉寂嘉。今天寫一下吧。首先上個動態(tài)圖架忌,看效果:
更多內(nèi)容請關(guān)注微公號:unity風雨路
在之前的文章中講過如何實現(xiàn)技能冷卻的效果(上圖中技能冷卻效果)失晴,血條的慢慢減小原理和技能冷卻的是一樣的褪那。
下面是具體步驟:?
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);
? ? ? ? }
? ? }
}
就這樣就實現(xiàn)了這個功能呆奕,So Easy!
————————————————
版權(quán)聲明:本文為CSDN博主「紫龍大俠」的原創(chuàng)文章养晋,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明梁钾。
原文鏈接:https://blog.csdn.net/alayeshi/article/details/70738126