- Home /
How to change image pop up depending on health percentage
Hello, what I want to do is if my player health goes below 50% I have an image that pops up and informs the player they are dying it also has some cool blood effects. What I want to happen is if the Player picks up a health pick up his health is regenerated and the image pop up goes away. The problem I am having is that the image pop up is not showing up when health falls below 50% and if I can get the image pop up to show up I can only have it disappear if I have exactly 51% health. What am I doing wrong or what am I missing? Any help would be greatly appreciated. here is my code.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement;
public class PlayerHealth : MonoBehaviour { [SerializeField] Slider healthBar; [SerializeField] Text healthText; [SerializeField] GameObject DeathUI;
[SerializeField]
private string sceneNameToLoad;
public float maxHealth = 100;
public float curHealth;
void Start()
{
healthBar.value = maxHealth;
curHealth = healthBar.value;
}
void OnTriggerStay ( Collider other )
{
if (other .gameObject.tag == "Damage")
{
healthBar.value -= 1f;
curHealth = healthBar.value;
}
if (other .gameObject.tag == "Heal")
{
healthBar.value += 1f;
curHealth = healthBar.value;
}
if (other .gameObject.tag == "HPickUp")
{
healthBar.value += 25f;
curHealth = healthBar.value;
}
}
void Update()
{
healthText.text = curHealth.ToString () + " %";
if (curHealth <= 51) {
DeathUI.gameObject.SetActive (false);
}
else if (curHealth <= 50)
DeathUI.gameObject.SetActive (true);
if (curHealth <= 0)
SceneManager.LoadScene (sceneNameToLoad);
}
}
Answer by allenallenallen · Jan 15, 2021 at 06:10 AM
Change the if statements to these:
if (curHealth >= 51)
DeathUI.gameObject.SetActive (false);
else
DeathUI.gameObject.SetActive (true);
Your if statements logic are wrong. You want the image to disappear when your health is greater or equal to 51, not less than or equal to 51.
Thank you very much. Now can I use this same method to have different pop ups appear and disappear depending on the % of health left? By changing the value here : (curHealth >= 21) ?
You can. But only in a new separate If Statement. As in don't use an Else If directly.
if (curHealth >= 51)
DeathUI.gameObject.SetActive (false);
else
DeathUI.gameObject.SetActive (true);
if (curHealth >= 21)
NewUI.gameObject.SetActive (false);
else
NewUI.gameObject.SetActive (true);