ENEMY HEALTH BAR

hey guys i’m having a problem, i want to my enemy health bar show up when my player is close to the enemy but i don’t know how to do it please can someone help me?

this is the enemy lifebar code:

using UnityEngine;
using System.Collections;

public class EnemyHealth : MonoBehaviour
{
public int MaxHealth = 100;
public int CurHealth = 100;
//public bool barradevida = false;
//public int maxDistance;
//public int minDistance;
public Transform target;
private Transform myTransform;
public Transform BarraInterface;

public float HealthBarLenght;

// Use this for initialization
void Start ()
{
	//GameObject go = GameObject.FindGameObjectWithTag("Player");
	
	//target = go.transform;
	
	//maxDistance = 2;
	//minDistance = 7;

	HealthBarLenght = Screen.width / 4;
}

// Update is called once per frame
void Update ()
{
	

	
	
	
	AdjustCurrentHealth (0);
	
}

public void OnGUI ()
{
	
	
	
	GUI.Box (new Rect (900, 20, HealthBarLenght, 20), CurHealth + "/" + MaxHealth);
	
	
}

public void AdjustCurrentHealth (int adj)
{
	CurHealth += adj;
	
	if (CurHealth < 0)
		CurHealth = 0;
	
	//if(CurHealth == 0)
	//GameObject.Destroy(gameObject);
	
	
	
	//if(CurHealth == 0)
	//GameObject.Destroy(GameObject.FindWithTag == "Enemy");
	
	if (CurHealth <= 0) {
		Destroy (gameObject);
	}
	
	
	if (CurHealth > MaxHealth)
		CurHealth = MaxHealth;
	
	if (MaxHealth < 1)
		MaxHealth = 1;
	
	
	HealthBarLenght = (Screen.width / 4) * (CurHealth / (float)MaxHealth);
	
	//GameObject.Destroy(GameObject.FindWithTag == "Enemy");
	
}

}

AND this is my enemy AI code

using UnityEngine;
using System.Collections;

public class EnemyAI : MonoBehaviour {
public Transform target;
public int moveSpeed;
public int rotationSpeed;
public int maxDistance;
public int minDistance;

private Transform myTransform;
// isso serve para deixar as coisas mais rapidas, espero descobrir mais depois
void Awake() {
	myTransform = transform;
}

// Use this for initialization
void Start () {
	
	
	   
	GameObject go = GameObject.FindGameObjectWithTag("Player");
	
	target = go.transform;
	
	maxDistance = 2;
	minDistance = 7;
	
	
}

// Update is called once per frame
void Update () 
{

	if(Vector3.Distance(target.position,  myTransform.position) <= minDistance)
	{
	
	Debug.DrawLine(target.transform.position, myTransform.position, Color.yellow);

	// olhar para o alvo
	myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed * Time.deltaTime);
	
	if(Vector3.Distance(target.position,  myTransform.position) > maxDistance) {
		
		
	
	//move até o alvo
	
		
	     myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
		
		}
		
	}
}

}

Here’s an example of what you could do:

If you want the enemy healthbar to be on top of the enemies like in, lets say, WoW, then you could use this, transforming the position of the enemy into screenspace allows you to use Unity’s GUI to make a healthbar that floats above the head of the enemy.

To make the healthbar dissapear when the enemies are too far away from you, you could do a few things; you could make a list, then check the coordinates of the various gameobjects, you could make a raycast that checks the distance, and finally you could add a spherecollider to the character you’re controlling, stating that while the enemies are within that collider, then their healthbars should be shown.

I wont write the code for it for you, as i dont have the time for that, but the script reference should help you a lot :slight_smile: