2016-09-20 5 views
0

Следующий скрипт наносит урон моему вражескому сборнику, но верхняя граница здоровья не соответствует его текущему здоровью. Вместо того, чтобы вносить изменения в соответствующую панель работоспособности, он только вносит изменения в первый экземпляр сборника в окне иерархии. Однако враги все равно будут уничтожены, если к ним будет применен правильный урон. Что-то, что нужно отметить, так это то, что изображение в баре здоровья является дочерним элементом холста, а холст является дочерним элементом основного сборника с прикрепленным к нему сценарием. Как я могу это исправить?Бары здоровья, которые работают независимо

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); 
    } 
} 

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^