Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class GuiLifeBar : MonoBehaviour {
- // Variables de control
- public bool flagHealth = false;
- // Variables para la barra de vida
- public Texture2D txHealthBarBase = null; // Barra de vida: Base
- public Texture2D txHealthBarIcon = null; // Barra de vida: Icono
- public Texture2D[] txHealthBarLed; // Barra de vida: Elemento marcador (Array)
- public int healthBarLenght = 0; // Numero de elementos de la barra de vida (longitud)
- public int healthBarSpace = 0; // Distancia entre elementos de la barra de vida
- public int healthTotal = 0; // Total de vida
- // Al crearse el objeto...
- void Start () {
- // Inicializa la Gui
- InitGui();
- }
- // Main GUI
- void OnGUI() {
- // Gui de la energia
- if (flagHealth) DrawGui();
- }
- // Inicializaciones
- void InitGui() {
- // Variable de uso general
- int i = 0;
- // Captura de errores de asignacion
- if (txHealthBarBase == null) Debug.LogError("<txHealthBarBase> No asignado.");
- if (txHealthBarIcon == null) Debug.LogError("<txHealthBarIcon> No asignado.");
- for (i = 0; i < txHealthBarLed.Length; i ++) {
- if (txHealthBarLed[i] == null) Debug.LogError("<txHealthBarLed["+ i +"]> No asignado.");
- }
- }
- // Dibuja la Barra de energia
- void DrawGui() {
- // Variables internas
- int i = 0; // Indice del bucle
- int tx = 0; // ID de textura a mostrar
- int posX = 0; // Posicion original del dibujado de la barra (X)
- int fullBlocks = 0; // nº total de bloques llenos
- float halfBlocks = 0; // nº de fracciones llenas del bloque a medio completar
- float blockContent = ((float)healthTotal / (float)healthBarLenght); // nº de fracciones que componen cada bloque lleno
- int lastTx = (txHealthBarLed.Length - 1); // nº de la ultima textura (ID mas alto)
- // Dibuja todos los elementos de la GUI de la barra de energia en un mismo grupo
- GUI.BeginGroup(new Rect(0,0, txHealthBarBase.width, txHealthBarBase.height));
- // Fondo de la barra
- GUI.DrawTexture(new Rect(0, 0, txHealthBarBase.width, txHealthBarBase.height), txHealthBarBase, ScaleMode.ScaleToFit, true, 0);
- // Icono de energia
- GUI.DrawTexture(new Rect(4, 8, txHealthBarIcon.width, txHealthBarIcon.height), txHealthBarIcon, ScaleMode.ScaleToFit, true, 0);
- // Dibuja los elementos de la barra de vida
- posX = 86; // Posicion inicial de la barra
- fullBlocks = (int)((healthBarLenght * Player.health) / healthTotal); // Calcula cuantos bloques llenos
- for (i = 0; i < healthBarLenght; i ++) {
- // Si el player tiene vida...
- if (Player.health > 0) {
- // Si este segmento esta lleno del todo, usa la textura adecuada
- if (i < fullBlocks) {
- tx = lastTx;
- // Si este segmento esta parcialmente lleno del todo, usa la textura adecuada
- } else if (i == fullBlocks){
- halfBlocks = (Player.health - (i * blockContent));
- tx = (int)((halfBlocks * lastTx) / blockContent);
- // Si este segmento esta vacio del todo, usa la textura adecuada
- } else {
- tx = 0;
- }
- } else {
- tx = 0;
- }
- // Dibuja todos los elementos de la barra
- GUI.DrawTexture(new Rect(posX, 8, txHealthBarLed[tx].width, txHealthBarLed[tx].height), txHealthBarLed[tx], ScaleMode.ScaleToFit, true, 0);
- posX += healthBarSpace;
- }
- GUI.EndGroup();
- }
- }
Add Comment
Please, Sign In to add comment