- Home /
Boss Health Bar
Okey, so basically I am trying to create a boss health bar that follows the enemy (above his head) and if player collides, it drops down from 100 to 80. The script should be c# and it's 2D. This is my current script
if(col.gameObject.name == "BossBody"){
gameObject.transform.position = respawnPoint.position;
bossDamage = 0;
AudioSource.PlayClipAtPoint(BossDeath, transform.position);
}
if(col.gameObject.name == "Boss"){
bossDamage +=1;
Debug.Log ("Current bossDamage is: " + bossDamage);
AudioSource.PlayClipAtPoint(BossHit, transform.position);
}
if(col.gameObject.name == "Boss" && bossDamage == 5) {
Destroy(col.gameObject);
score+= 5;
AudioSource.PlayClipAtPoint(BossKill, transform.position);
GetComponent<AudioSource>().Stop();
audio2.Play ();
}
This makes the music stop, play and so on aswell as makes the boss die after 5 hits. I have tried to add a boss health bar to the script by impementing this code that I found online, but I simply cannot get it working. All help and tips is much appreaciated. Thanks in advance
public int maxHealth = 100;
public int curHealth = 100;
public float healthBarLength;
// Use this for initialization
void Start () {
healthBarLength = Screen.width / 6;
}
// Update is called once per frame
void Update () {
AddjustCurrentHealth(0);
}
void OnGUI() {
GUI.Box(new Rect(700, 10, healthBarLength, 20), curHealth + "/" + maxHealth);
}
public void AddjustCurrentHealth(int adj) {
curHealth += adj;
if (curHealth < 0)
curHealth = 0;
if (curHealth > maxHealth)
curHealth = maxHealth;
if(maxHealth < 1)
Answer by Tim-Duval · Sep 07, 2018 at 11:39 PM
Well, really you should create the bosses max health and then have a variable for the current health.
private float bossMaxHp = 100f;
private float bossHp;
public Image hpBarBackground; // Add your background image here(inside Unity)
public Image hpBarForeground; // add the HP image that will be affected by Damage here
Somewhere inside your code: bossHp = bossMaxHp;
When using Unity UI, or images you've created for HP bar, you can have your images accessed like this:
void Update(){
hpBarForeground.fillAmount = bossHp / bossMaxHp;
}
As far as your bosses damage and detection, you should use OnCollisionEnter()
void OnCollisionEnter(Collision collision){
if(collision.tag == "Boss"){
} // Insert your code here
} And you can pretty much keep adding your IF statements inside this function. I think this will clean your code up quite a bit.
Your answer
Follow this Question
Related Questions
2d c# boss follow code 0 Answers
In my 2D platformer game, how would I create a height marker?, 1 Answer
Enemy keeps moving in one direction. Help pls! 2 Answers
How to check if an object hits the ground hard enough then add explosive force around it (2D) 1 Answer
[PUN] Getting warnings and having problems with instantiation and PhotonView 1 Answer