2016-09-20 4 views
0

Das folgende Skript wendet Schaden an meinem Feind Prefab, aber der Gesundheits-Balken über ihm passt nicht mit seiner aktuellen Gesundheit. Anstatt Änderungen an der entsprechenden Statusleiste vorzunehmen, wird nur die erste Instanz der Vorplanung im Hierarchiefenster geändert. Die Feinde werden trotzdem zerstört, wenn die richtige Menge Schaden zugefügt wird. Beachten Sie, dass das Bild der Integritätsleiste ein untergeordnetes Element der Zeichenfläche ist und dass die Zeichenfläche ein untergeordnetes Element der Hauptvorbereitung ist, an die das Skript angehängt ist. Wie kann ich das beheben?Gesundheit Bars, die unabhängig arbeiten

using UnityEngine; 
using System.Collections; 

public class EnemyHealth : MonoBehaviour { 
    private float curHealth = 100f; 
    private float GunDamage; 
    private GameObject hb; 
    private GameObject gd; 
    private GameObject canvas; 
    public float maxHealth; 
    public string gunType; 

void Start() { 
    canvas = GameObject.Find ("HealthCanvas"); 
    hb = GameObject.Find ("HealthBar"); 
    gd = GameObject.Find (gunType); 
    GunDamage = gd.GetComponent<Shoot>().bulletDamage; 
} 

public void SubtractHealth(float howMuch){ 
    curHealth = curHealth - howMuch; 
    if (curHealth <= 0) { 
     Destroy (this.gameObject); 
    } 

    //Update health bar 
    hb.GetComponent<RectTransform>().sizeDelta = new Vector2 (hb.GetComponent<RectTransform>().sizeDelta.x - 0.95f/maxHealth * GunDamage , hb.GetComponent<RectTransform>().sizeDelta.y); 
    Debug.Log (curHealth); 
    } 
} 

Antwort

1
canvas = this.transform.FindChild ("HealthCanvas").gameObject; 
hb = canvas.transform.FindChild ("HealthBar").gameObject; 
Verwandte Themen