Frage von DreamModell, 21

Unity 5 Scrollbar bzw. Healthbar C#?

Ich habe ein Problem ich möchte eine Lebens anzeige machen aber sie funktioniert nicht richtig, wenn man den Gegner trifft wird nichts an der Anzeige abgezogen aber wenn er tot ist dann ist die Anzeige auch leer. Hier der Code :

using UnityEngine; using UnityEngine.Networking; using System.Collections; using UnityEngine.UI;

public class Player : NetworkBehaviour {

[SyncVar]
private bool _isDead = false;
public bool isDead
{
    get { return _isDead; }
    protected set { _isDead = value; }
}

[SerializeField]
private int maxHealth = 100;

[SyncVar]
private int currentHealth;
public Scrollbar healthbar;

[SerializeField]
private Behaviour[] disableOnDeath;
private bool[] wasEnabled;

public void Setup()
{
    wasEnabled = new bool[disableOnDeath.Length];
    for (int i = 0; i < wasEnabled.Length; i++)
    {
        wasEnabled[i] = disableOnDeath[i].enabled;
    }

    SetDefaults();
}

[ClientRpc]
public void RpcTakeDamage(int _amount)
{
    if (isDead)
        return;

    currentHealth -= _amount;

    healthbar.size = currentHealth;

    Debug.Log(transform.name + " now has " + currentHealth + " health.");

    if (currentHealth <= 0)
    {
        Die();
    }
}

private void Die()
{
    isDead = true;

    for (int i = 0; i < disableOnDeath.Length; i++)
    {
        disableOnDeath[i].enabled = false;
    }

    Collider _col = GetComponent<Collider>();
    if (_col != null)
        _col.enabled = false;

    Debug.Log(transform.name + " is DEAD!");

    StartCoroutine(Respawn());
}

private IEnumerator Respawn()
{
    yield return new WaitForSeconds(GameManager.instance.matchSettings.respawnTime);

    SetDefaults();
    Transform _spawnPoint = NetworkManager.singleton.GetStartPosition();
    transform.position = _spawnPoint.position;
    transform.rotation = _spawnPoint.rotation;

    Debug.Log(transform.name + " respawned.");
}

public void SetDefaults()
{
    isDead = false;

    currentHealth = maxHealth;

    for (int i = 0; i < disableOnDeath.Length; i++)
    {
        disableOnDeath[i].enabled = wasEnabled[i];
    }

    Collider _col = GetComponent<Collider>();
    if (_col != null)
        _col.enabled = true;

}

}

würde mich sehr über eine schnelle und hilfreiche Antwort freuen

Antwort
von DreamModell, 9

Gelöst!

Problem gefunden Scrollbar hat 1f und maxhealth 100 habe den Scrollbar durch den Slider ersetzt und habe max value auf 100 gestellt das hat mein Problem gelöst

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten