Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

175
Vistas
Barra de HP no visible en el modo de reproducción

Soy nuevo en Unity y el script C#. Me enfrento a un problema que no puedo resolver, así que, por favor, cualquiera puede orientarme sobre lo que sucede en esta escena.

Entonces, el problema es que hay una barra de HP (barra verde) para mostrar la salud de los Pokémon en este , pero cuando entro en el modo de juego , la barra se vuelve invisible y no puedo averiguar qué está causando esto.

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class HPBar : MonoBehaviour { [SerializeField] GameObject health; public void SetHP(float hpNormalized) { health.transform.localScale = new Vector3(hpNormalized, 1f); } }

Arriba está el script utilizado para la barra de HP.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Está configurando el new Vector3 , un vector tridimensional, pero solo le da 2 valores. Lo que probablemente sucede es que el new Vector3(hpNormalized, 1f) se traduce en new Vector3(hpNormalized, 1f, 0f) y su objeto de juego tiene una escala de 0 en una dimensión, y eso da como resultado un comportamiento extraño.

Intente configurar las 3 dimensiones de esta manera:

 new Vector3(hpNormalized, 1f, 1f);

EDITAR: Para el constructor de public Vector3(float x, float y) la documentación dice

Crea un nuevo vector con los componentes x, y dados y establece z en cero.

Fuente: https://docs.unity3d.com/ScriptReference/Vector3-ctor.html

Entonces, la dimensión z se establece en cero en su caso y sospecho que esa es la fuente de la desaparición de la barra de salud.

De lo contrario, recomiendo usar Debug.Log("Health set to"+hpNormalized+ " and scale of the object is"+health.transform.localScale); en la función para ver lo que está pasando.

over 4 years ago · Santiago Trujillo Denunciar

0

No tenemos idea, ni nos diste sobre tu proyecto pero parece que ni siquiera conoces tus valores. Puede llamar a la depuración al llamar a los métodos y aprender el valor de las variables. Además, si desea mover su salud solo entre valores específicos, puede usar Mathf.Clamp . Este método sujeta la variable dada al rango dado.

Además, su enfoque es incorrecto al principio. No debe usar transfrom.localscale para restar su barra de salud. Puede establecer el tipo de imagen de la barra de salud en Lleno y, si desea que sea horizontal o vertical, configúrelo también en Unity Inspector. Luego llamas desde un código como este:

healthBarImage.fillAmount = hpNormalized; es tan simple como eso

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda