Question by
unity_xjpHB3eqgJ2l2g · Apr 08, 2019 at 05:59 PM ·
not workingif statementcheckwronghp
Variables check with If problem
Hi guys, i have a problem with my HP script.
my if statement doesn't work properly. When i start the game, in the debug screen, my code prints all the conditions that i declared, and my question is " why my all the if statements are true even if the condition of one of them isn't true?
the two functions below the update needs in other scripts to add or remove HP to my player.
Thank u, here's the code!
using UnityEngine.SceneManagement;
public class HPSystem : MonoBehaviour
{
//Variabli per HP massimi del giocatori e quelli correnti
public int maxHP = 3;
public int check = 3;
public int curHP;
public bool destroy;
// Use this for initialization
void Start()
{
curHP = check;
}
// Update is called once per frame
void Update()
{
if (curHP >= check)
{
// curHP = check;
print("hpfull");
}
if (curHP <= check)
{
print("hpnotfull");
}
if (curHP == 0)
{
// Death();
}
}
//Se gli Hp sono uguali a 0, ricarica la scena
void Death()
{
SceneManager.LoadScene("Main menu", LoadSceneMode.Single);
}
//Funzione che viene richiamata nello script dei nemici, che cambiano il valore di dmg, variabile che stabilisce quanti danni riceve il giocatore
public void Damage(int dmg)
{
curHP -= dmg;
print("1 dmg taken");
}
public void Restored(int rel)
{
if (curHP <= check)
{
curHP += rel;
print("1 HP restored");
destroy = true;
}
else if (curHP >= check)
{
print("HP already full");
destroy = false;
}
}
}
Comment
Answer by Justinger · Apr 11, 2019 at 06:16 AM
Your second if statement probably shouldn't have an equal on it. Here is a mockup of the code I just tried and everthing seemed to work ok on my end.
public class HPSystem : MonoBehaviour
{
public int maxHP = 3;
public int curHP;
public bool destroy;
// Use this for initialization
void Start()
{
curHP = maxHP;
}
// Update is called once per frame
void Update()
{
if (curHP >= maxHP)
{
Debug.Log("Health full!");
}
else if (curHP < maxHP && curHP > 0)
{
Debug.Log("Health not full.");
}
else // means 0 or below. That's all that's left.
{
Death();
}
}
void Death()
{
Debug.Log("Dead!");
this.enabled = false;
}
}