Unity 3D坦克大战案列学习(五)
实现坦克的生命值和伤害机制
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
/// <summary>
/// 坦克的生命值
/// </summary>
public class TankHealth : MonoBehaviour
{
public int hp = 100;//生命值
public GameObject tankExplosion;//坦克死亡特效
public AudioClip tankExplosionAudio;//坦克爆炸音效
public Slider hpSlider;//血条UI
private int hpTotal;//坦克总血量
// Use this for initialization
void Start ()
{
hpTotal = hp;
}
// Update is called once per frame
void Update () {
}
void TakeDamage()
{
if(hp<=0)return;//当血量小于等于0,已经死亡,不需要再受到伤害
hp -= Random.Range(10, 20);//随机减去10~20的生命值
hpSlider.value =(float) hp / hpTotal;//HP和Ui的连接
if (hp <= 0)//受到伤害之后,血量为0 控制死亡效果
{
//播放坦克爆炸音效
AudioSource.PlayClipAtPoint(tankExplosionAudio,transform.position);
//血量为0调用坦克死亡特效
GameObject.Instantiate(tankExplosion,transform.position + Vector3.up, transform.rotation);
GameObject.Destroy(this.gameObject);//销毁血量为0的坦克
}
}
}