Jump to content
Sign in to follow this  
croviman

Ayuda! Vincular barra Slider a una variable

Recommended Posts

Hola chicos, como ya saben son un CERO en lo que refiere a crear scripts, por lo que les voy a solicitar una pequeña ayuda a quien tenga ganas de dar una mano.

Tengo unos scripts para manejar la vida del player y he creado una barra de energía con un slider... Lo que no consigo es vincular ambas cosas para que se represente gráficamente la perdida o ganancia de vida del player en la barra slider.

Les dejo por aquí el Script de que gestiona la vida:

using UnityEngine;

public class PlayerHealth : MonoBehaviour
{
    public float startingHealth = 1800f;
    public float currentHealth;

    void Awake()
    {
        currentHealth = startingHealth;
    }

    void Update()
    {
        if (currentHealth <= 0f)
        {
            Destroy(gameObject);
        }

        if (currentHealth >= 1800f)
        {
            currentHealth = startingHealth;
        }
    }

    public void remove(float amount)
    {
        currentHealth -= amount;
    }
}

Que debería modificar para que todo funcione?

Estuve viendo videos en youtube y he intentado seguir sus pasos pero me sale siempre un error rojo en la consola....

Share this post


Link to post
Share on other sites

Desconzco el uso del "remove" pero lo deje por si tenes hecho el descuento de currenthealth.

Agrega a la jerarquia un Slider. Despues arrastralo al public Slider del script.

code:

using UnityEngine;
using UnityEngine.UI;

public class PlayerHealth : MonoBehaviour
{
    public float startingHealth = 1800f;
    public float currentHealth;
    public Slider slider;

    void Awake()
    {

        currentHealth = startingHealth;
        slider.minValue = 0; //El valor minimo del Slider. No es necesario agregarlo. Era para que lo veas.
        slider.maxValue = startingHealth; //Agregas el maximo de valor del Slider
    }

    void Update()
    {

        slider.value = currentHealth;

        if (currentHealth <= 0) // Si currentHealth da un resultado negativo usar "<=". Sino usar "=" 
        {
            Destruir();
        }
    }


    public void Destruir()
    {
        Destroy(gameObject);
    }
    public void remove(float amount)
    {
        currentHealth -= amount;
    }
}

 

En caso que quieras que el Slider no sea interactuable (Que no lo puedas mover con el mouse) agrega esta linea en void Awake:

slider.interactable = false;

 

Espero que te haya servido 🙂

Edited by stztek
  • Like 1

Share this post


Link to post
Share on other sites

Muchas gracias!!! Tu ayuda me ha solucionado un enorme problema! De verdad te lo agradezco un montón. El script funciona genial!

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...