Jump to content
Unity Insider Forum
Sign in to follow this  
Unitynoob42

Powerleiste nach Gegnertod auffüllen

Recommended Posts

Hallo, ich mache ein 2D Spiel in Unity und benutze ein C# Skript. Ich möchte gerne, dass wenn ein Gegner getötet wird, die Powerleiste um 2 von 100 Punkte aufgefüllt wird, das klappt allerdings nicht. Hier der Code:

public class HealthController : MonoBehaviour
{

private float power = 0;


private float maxPower = 100;

public Image powerGUI;

public Enemy enemy;

void UpdateView()
{
   if(enemy.isDead == true && powerGUI.fillAmount != maxPower)
   {
         powerGUI.fillAmount = 0.02F;
   }
	
}
}
public class Enemy : MonoBehaviour {

    public float health = 1;
    public bool isDead = false;

	void ApplyDamage(float damage)
    {
        health -= damage;

        if (health <= 0)
        {
            isDead = true;
            Destroy(gameObject);
        }
    }

 

 

Share this post


Link to post
Share on other sites
Zitat

Ich möchte gerne, dass wenn ein Gegner getötet wird, die Powerleiste um 2 von 100 Punkte aufgefüllt wird, das klappt allerdings nicht.

Das klappt nicht, weil du versuchst auf die enemy-Komponente zuzugreifen, obwohl du das GameObjekt, das die Komponente enthält zerstörst , sobald die Variable "health" <= 0 ist. Sobald du "Destroy(gameObject)" aufrufst, ist das GameObject (mit samt der Komponente) nicht mehr vorhanden.

Share this post


Link to post
Share on other sites

Danke für die Antwort,

 

habe den Code so geändert, allerdings funktioniert es immernoch nicht.

public class Enemy : MonoBehaviour {

    public float health = 1;
    public bool isDead = false;

	 void ApplyDamage(float damage)
    {
        health -= damage;

        if (health <= 0)
        {
            isDead = true;
            
            Death();
            
        }
    }

    void Death()
    {
        isDead = true;
        walk.enabled = false;
        anim.Play("mummy_death");
        health = health - 1;
       
    }

 

Share this post


Link to post
Share on other sites

OK, wie dein Name und der Quellcode schon vermuten lassen bist du noch ganz am Anfang aber gib nicht auf, das war jeder mal. =)

Also als erstes setzt du deine "isDead" Variable 2 mal auf "true" das ist zwar nicht schlimm aber unnötig. Daher würde ich dir erstmal empfehlen, innerhalb deines if-Blocks in der Methode "ApplyDamage()" diese Zeile zu entfernen:

isDead = true;

da du genau das gleiche sowieso nochmal in der Death()-Methode machst.

Dann möchtest du ja, dass die Variable "health" auf 2 steigt, nach dem sie kleiner oder gleich 0 ist. In deiner Death()-Methode machst du mit deiner health-Variable aber folgendes:

health = health - 1;

Das heißt, du verringerst ihren Wert um eins. Da du aber ihren wert auf 2 gesetzt haben möchtest (nicht um 2 erhöht, sondern auf 2 gesetzt) müsste die Zeile so aussehen:

health = 2;

Wenn das dann immer noch nicht funktioniert, dann hast du noch irgendwo anders fehlerhaften Code.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×