七.敌人受伤减血
c#敌人生命值
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static UnityEngine.GraphicsBuffer;
public class Enemy_Health : MonoBehaviour
{
public float InitHealth = 8;
private float currentHealth = 0;
void Start()
{
currentHealth = InitHealth;
}
void Update()
{
}
public void Damage(float amount)
{
currentHealth -= amount;
if (currentHealth <= 0) //血为0
{
Enemy_Spawner.EnemyAlive--;//打死
Destroy(gameObject);
}
}
}
C#子弹伤害加上去
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bullet : MonoBehaviour
{
private Transform m_Target;//目标
public float speed = 20;//子弹速度
public float damage = 1;//子弹攻击力
public void SetTarget(Transform target)
{
m_Target = target;
}
void Start()
{
}
void Update()
{
if (m_Target == null)
{
Destroy(gameObject);
return;//没目标不反应
}
Vector3 dir = m_Target.position - transform.position;
if (Vector3.Distance(m_Target.position,transform.position) < speed * Time.deltaTime)
{
HitTarget();//击中目标
return;
}
transform.Translate(dir.normalized * speed * Time.deltaTime, Space.World);
transform.LookAt(m_Target);
}
void HitTarget()
{
EnemyDamage();//敌人掉血
Destroy(gameObject);//销毁自己
}
private void EnemyDamage()
{
Enemy_Health enemyHp = m_Target.GetComponent<Enemy_Health>(); //Damage( amount);
if (enemyHp != null)
{
enemyHp.Damage(damage);
}
}
}
试运行,发现有报错...
是敌人的寻路在自己被摧毁后还寻路(好像是)前面加一个判断自己不为空.搞定