Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!