(1)新建一个UI>Slider(滑动器),删除Handle Slide Area
(2)将Slider的的Background属性面板中的Source Image修改为Project>packages>Sprites>Health Wheel
(3)将Slider>Fill Area>Fill中的Source Image也同(3)修改
(4)调整大小
大圆圈的调整:Slider文件属性面板Width*Height进行修改;Slider>Background的如图位置修改为四周拉伸(这样会得出一个正常的圆)
小圆圈的拉伸:Fill Area同上操作
(5)将Slider修改为半圈模式Canvas>Slider>Fill Area>Fill的属性面板中的Image(Script)>Image Type修改为Filled模式
(6)保持两个圆圈即Slider和Fill Area保持大小一致,并将Fill的颜色修改为红色
(7)将Canvas设置成3D的UI,这样才能更好的充当血条:在Canvas的属性面板中>Render Mode修改为World Space模式
(8)将Canvas的Width和Height修改为合适值
(9)在Hierarchy中将Canvas放在Camera下,调整到合适的位置,改变其Width和Height值;
(10)完成调整后,X轴旋转90度,使其平铺在的身下
(11)点击属性面板Apply。
(12)通过脚本tankHealth进行UI和血条的相统一
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;//8.13)1需要设置一个命名空间以启用UI public class TankHealth : MonoBehaviour { public int hp = 100;//5.3)1.坦克初始血量为100 public GameObject tankExplosion;//5.3)6.使用此名称作为坦克预制的内容 public AudioClip tankExplosionAudio;//7.2)1获取相关的音效 public Slider hpSlider;//8.13)2申明一个UI的Slider即滑动条 private int hpTotal;//8.13)3记录坦克的总血量 void Start () { hpTotal = hp;//8.13)4在开始就记录坦克的血量 } void Update () { } void TakeDamage()//5.3)2.当坦克受到攻击时 { if (hp <= 0) return;//5.3)4.在每次坦克受到攻击之前都要检测坦克是否已经血量不足,如果不足,直接结束 hp -= Random.Range(10, 20);//5.3)3.随机减少10-20滴血 hpSlider.value = (float)hp / hpTotal;//8.13)5两个都是int类型,需要将其中一个强制转为float类型,两者相除为小数 if (hp <= 0)//5.3)5.如果受攻击后血量小于0,则应该控制死忙效果 { AudioSource.PlayClipAtPoint(tankExplosionAudio,transform.position);//7.2)2当坦克血量不足时,坦克发生爆炸 GameObject.Instantiate(tankExplosion, transform.position + Vector3.up, transform.rotation); GameObject.Destroy(this.gameObject); //当满足if条件时,坦克爆炸效果出现,且坦克会升至空中,然后消失 } } }
|