遇攻击血量减少
1.以子弹射中敌人,血条减少为例。
2.添加Image和Text,作为血量和血值。
3.相关代码:
//子弹碰到敌人,血量会减少,子弹消失(赋予子弹,然后将子弹转为预制体)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Bulletmove : MonoBehaviour {
// Use this for initialization
void Start () {
//给子弹一个向前的速度
GetComponent<Rigidbody>().velocity = transform.forward * 10;
}
private void OnCollisionStay(Collision collision)
{
if (collision.gameObject.tag == "bear") //如果标签为bear
{
Destroy(gameObject); //子弹消失
collision.gameObject.GetComponent<BearHP>().xuetiao -= 30; //血量减少30
}
}
// Update is called once per frame
void Update ()
{
Destroy(gameObject, 3); //一段时间后消失
}
}
//血量和血条相应的减少(赋予敌人)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class BearHP : MonoBehaviour {
public Text text;
public float xuetiao = 100; //血条数值
public Image green; //血条绿值
public Image red;
// Use this for initialization
void Start () {
}
}
// Update is called once per frame
void Update()
{
if (xuetiao <= 30)
{
xuetiao = 0; //每次减少30的血值,如果不足30,置为0,防止变成负数
Destroy(gameObject); //血值为0,消失
text.gameObject.SetActive(false);
green.gameObject.SetActive(false);
red.gameObject.SetActive(false);
}
green.fillAmount = xuetiao / 100; //血值绿条与血值数值相对应
text.text = "敌剩余血量:" + xuetiao; //在界面上显示血值
}
}
//对子弹实例化(生成),赋予和taget一样的位置和角度作为初始值(即在taget处发射子弹)
GameObject bullet = Instantiate(Resources.Load(“zidan”), taget.position, taget.rotation);