Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Temas recientes

[Resuelto] problema con una barra de vida

Iniciado por Lucky-chan, Marzo 18, 2019, 08:49:04 PM

Tema anterior - Siguiente tema
Marzo 18, 2019, 08:49:04 PM Ultima modificación: Marzo 20, 2019, 04:16:22 PM por Lucky-chan
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;
     }

 
 

Marzo 18, 2019, 11:44:08 PM #1 Ultima modificación: Marzo 18, 2019, 11:58:22 PM por Samusan
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.
 
 

Marzo 19, 2019, 07:51:26 PM #2 Ultima modificación: Marzo 19, 2019, 08:09:01 PM por Lucky-chan
Cita de: Samusan date=1552949048No 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

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.

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í.

@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

Etiquetas: