Cómo hacer que healthbar disminuya en la unidad

Quiero build una barra de salud que muestre la energía del jugador. Tengo dos botones "PLAY" e "IDLE" para mostrar la animation. Cuando hago clic en el button "PLAY", el personaje comienza a correr junto con la barra de salud. debería disminuir su energía. Aquí está el código escrito para los dos clics del button

void OnGUI() { if (GUI.Button (new Rect (100, 200, 50, 50), "PlAY")) { animation.Play ("run"); } if (GUI.Button (new Rect (100, 500, 50, 50), "IDLE")) { animation.Play ("idle"); } } 

Ahora necesito crear una barra de salud para mostrar la disminución de energía cuando el jugador comienza su animation. ¿Podría ayudarme a progtwigr la creación de la barra de energía?

enter image description here

Hecho el código para crear la barra de progreso, pero la barra no se está networkinguciendo. Aquí está el código

 private float loadBarProgress = 0.0f; private const float loadBarSpeed = 0.25f; public Texture loadBarTexture = null; void OnGUI() { //Draw loading bar with offset texture coordinates GUI.DrawTextureWithTexCoords(new Rect(Screen.width * 0.4f, Screen.height * 0.4f, Screen.width * 0.2f, Screen.height * 0.1f), loadBarTexture, new Rect(loadBarProgress, 0.0f, 1.0f, 1.0f), false); } // Use this for initialization void Start () { } // Update is called once per frame void Update () { //Move the bar along; keep it's position between zero and one for best float point precision loadBarProgress += Time.deltaTime * loadBarSpeed; if (loadBarProgress >= 1.0f) loadBarProgress -= 1.0f; } 

Para normalizar un valor divídalo por la cantidad máxima permitida. Entonces, si tu personaje puede tener una cantidad de energía máxima de 100 y tiene un nivel de energía actual de 30 … 30/100 = 0.3

Lo mismo funciona para cualquier número Energía máxima 340 energía actual de 50 …. 50/340 = 0.147 Tenga en count que si hace estas matemáticas en c # en numbers integers, tendrá que lanzarlas para flotar antes de la operación de esta manera,

 scale = (float)currentEnergy / (float)maxEnergy; 

si la stream y el máximo ya son flotantes, puedes omitir el casting en flotadores

Entonces tu Rect debe hacerse usando este multiplicador.

 GUI.Button(new Rect(10, 40, 100 * scale, 20), "Energy"); 

Así que simplemente actualice su variable currentEnergy en algún lugar de su código y la barra se escalará en consecuencia.