Jump to content
UnitySpain
Lucky-chan

[Resuelto] problema con una barra de vida

Recommended Posts

buenas tardes, hoy tengo un problema con una barra de vida, que al iniciar el juego el valor inicial es 0. obviamente le puse que el valor inicial sea 3.

En pocas palabras quiero que sean solo 3 puntos de vida y que con cada golpe se reduzca 1 la vida, pero de hecho ni siquiera empieza con la vida total y noté que siquiera reconoce la void "TakeDamage" la cual llamo mas abajo.

estoy bastante segura de que revisé ya todo lo que pudiera estar causando problemas y no vi nada o no se reconocerlo...

script que controla la Barra de vida

    public Animator anim;
    public float Health =3f;
    // Start is called before the first frame update
    void Start()
    {
        
        anim.SetFloat("Health", Health);
    }

    // Update is called once per frame
    public void TakeDamage(int amount)
    {
        print("reach");
        Health = Mathf.Clamp(Health-amount, 0, 3);
        Health -= amount;
    }
}

bloque que resta(?) la vida

    public void EnemyKnockBack(float enemyPosX)
    {
        HPBar.SendMessage("TakeDamage", 1);
        jump = true;
        float side = Mathf.Sign(enemyPosX - transform.position.x);
        rb2d.AddForce(Vector2.left * side * jumpPower, ForceMode2D.Impulse);
        CanMove = false;
        Invoke("EnableMOV", 0.7f);
        spr.color = Color.red;
     }

 

Edited by Lucky-chan

Share this post


Link to post
Share on other sites

No comprendo del todo la duda ¿Te refieres a que la variable "Health" en lugar de valer 3 al inicio vale 0?  Si es así dado que estoy viendo que es pública es probable que esté asignada en el inspector con otro valor.

Por cierto, una pregunta que no tiene nada que ver, veo que estas utilizando "SendMessage" para llamar al método "TakeDamage" de HPBar, concretamente esta es la línea

HPBar.SendMessage("TakeDamage", 1);

Me extraña porque SendMessage es una instrucción que no se utiliza demasiado, no se como lo tienes montado pero lo mejor es llamar al método directamente "HPBar.TakeDamage(1);". Insisto en que no se como lo tienes montado, lo indico por si fuera de ayuda.

Un saludo.

 

Edited by Samusan

Share this post


Link to post
Share on other sites
20 hours ago, Samusan said:

No comprendo del todo la duda ¿Te refieres a que la variable "Health" en lugar de valer 3 al inicio vale 0?  Si es así dado que estoy viendo que es pública es probable que esté asignada en el inspector con otro valor.

Por cierto, una pregunta que no tiene nada que ver, veo que estas utilizando "SendMessage" para llamar al método "TakeDamage" de HPBar, concretamente esta es la línea


HPBar.SendMessage("TakeDamage", 1);

Me extraña porque SendMessage es una instrucción que no se utiliza demasiado, no se como lo tienes montado pero lo mejor es llamar al método directamente "HPBar.TakeDamage(1);". Insisto en que no se como lo tienes montado, lo indico por si fuera de ayuda.

Un saludo.

 

saludos compañero, utilicé send messaje ya que fue lo primero que se me ocurrió la verdad.

De hecho lo intente utilizando la forma que dices, pero me da el mismo error pero ahora intente llamar  a la script de forma "directa"

HP.TakeDamage(1);

y ahora me dice que se requiere una referencia al campo o metodo,

ya revisé la documentación y no entiendo que pasa x_x

osea entiendo  que se refiere a que no tiene ni idea a que lo estoy referenciando pero no entiendo como solucionarlo, y ademas que ni siquiera llega a la public void que puse en la script HP, por que no tira siquiera el print("reach"); que le puse

Edited by Lucky-chan

Share this post


Link to post
Share on other sites

Busca información sobre singleton y referencias. 

Estas teniendo problemas sobre programación, el foro intenta ayudar pero no vamos a estar al pendiente de problemas de programación básica.

Share this post


Link to post
Share on other sites

Si adjuntas, aunque sea por MP los scripts, te hecho una mano con eso, que parece que muchas dudas se producen por que te falta conocimiento de base en programación. Todos empezamos así.

Share this post


Link to post
Share on other sites

@Samusan gracias pero no hace falta que te molestes xd creo que a partir de ahora iré estudiando mas afondo cuando tenga un problema, de hecho ya resolví lo de la barra de vida, aunque tuve que hacer todo de nuevo

Share this post


Link to post
Share on other sites

×
×
  • Create New...