El sistema de vida o puntos de salud (HP) es una de las mecánicas más básicas y comunes en videojuegos. Nos permite gestionar cuánto daño puede recibir un personaje y cuándo se debe activar una consecuencia, como la muerte del jugador. En este tutorial aprenderás a implementar un sistema sencillo de vida en Unity utilizando C#, ideal para juegos 2D o 3D.
Si nunca has usado Unity o estás dando tus primeros pasos en desarrollo de videojuegos, ¡no te preocupes! Te guiaremos paso a paso para que entiendas cada línea de código y cómo funciona.
Requisitos previos
- Tener Unity Hub instalado.
- Familiaridad básica con la interfaz de Unity (crear objetos, añadir componentes).
- Conocimientos básicos de programación en C# (explicaremos cada paso para quienes estén empezando).
Configuración del proyecto en Unity
- Abre Unity Hub y crea un nuevo proyecto:
- Selecciona 2D o 3D dependiendo del tipo de juego que prefieras.
- Ponle un nombre a tu proyecto, por ejemplo: Sistema De Vida.
- Prepara el personaje y la escena:
- Si trabajas en 2D:
- Importa un sprite (puede ser una imagen simple de un personaje).
- Arrastra el sprite a la escena para crear el objeto del jugador.
- Si trabajas en 3D:
- Usa un Cube o Capsule como el jugador principal.
- Ajusta la posición del objeto sobre el plano (floor) para que no esté “flotando”.
- Si trabajas en 2D:
- Organiza tu escena:
- Añade un objeto “enemigo” o “trampa” (puede ser otro sprite o un cubo simple).
- Asegúrate de que el jugador y el enemigo tengan Colliders y Rigidbody si quieres usar físicas.
Crear el script para la vida del jugador
El script se encargará de manejar la lógica de salud del jugador, es decir, recibir daño, regenerar salud y “morir”.
- Crea un script C#:
- Haz clic derecho en la carpeta Assets → Create → C# Script.
- Nombra el script PlayerHealth.
- Código explicado línea a línea:
- Abre el script y copia el siguiente código:
using UnityEngine;
using UnityEngine.UI; // Necesario para usar la UI
public class PlayerHealth : MonoBehaviour
{
public int maxHealth = 100; // Salud máxima del jugador
private int currentHealth; // Salud actual del jugador
public Image healthBar; // Referencia para la barra de vida (opcional)
void Start()
{
// Inicializamos la salud actual al valor máximo al iniciar el juego
currentHealth = maxHealth;
UpdateHealthBar(); // Actualiza la barra al iniciar
}
// Método para recibir daño
public void TakeDamage(int damage)
{
currentHealth -= damage; // Resta el daño a la salud actual
currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth); // Evita que la salud baje de 0
UpdateHealthBar();
if (currentHealth <= 0)
{
Die(); // Llamamos a la función "morir"
}
}
// Método para curar salud
public void Heal(int amount)
{
currentHealth += amount; // Aumenta la salud
currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
UpdateHealthBar();
}
// Método para actualizar la barra de vida
void UpdateHealthBar()
{
if (healthBar != null)
{
healthBar.fillAmount = (float)currentHealth / maxHealth; // Actualiza la barra en porcentaje
}
}
// Método para manejar la "muerte"
void Die()
{
Debug.Log("El personaje ha muerto.");
// Aquí puedes añadir animaciones, reiniciar el nivel o desactivar al jugador
gameObject.SetActive(false); // Desactiva el jugador
}
}
Lenguaje del código: HTML, XML (xml)
Asignar el script y crear la barra de vida
- Asigna el script al jugador:
- Selecciona el objeto del jugador en la escena.
- Arrastra el script PlayerHealth al panel Inspector del objeto.
- Crear una barra de vida: (Opcional pero recomendable)
- Ve a GameObject → UI → Image para crear una barra de vida.
- Ajusta el tamaño y posición en la pantalla (arriba a la izquierda o centro superior).
- Configura:
- Color: Verde.
- Anchor: Fija en la parte superior de la pantalla.
- Asigna la imagen al campo healthBar en el script PlayerHealth desde el Inspector.
Crear objetos que causen daño y curación
- Script para objetos que causan daño:
- Crea un script llamado DamageDealer y añade este código:
using UnityEngine;
public class DamageDealer : MonoBehaviour
{
public int damage = 20;
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
PlayerHealth playerHealth = collision.gameObject.GetComponent<PlayerHealth>();
if (playerHealth != null)
{
playerHealth.TakeDamage(damage);
}
}
}
}
Lenguaje del código: HTML, XML (xml)
- Asigna el script a un objeto enemigo o trampa.
- Asegúrate de añadir un Collider (ej. BoxCollider2D) y marcar como “Is Trigger“.
2. Script para ítems de curación:
Crea un script llamado HealthPickup:
using UnityEngine;
public class HealthPickup : MonoBehaviour
{
public int healAmount = 25;
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
PlayerHealth playerHealth = other.GetComponent<PlayerHealth>();
if (playerHealth != null)
{
playerHealth.Heal(healAmount);
Destroy(gameObject); // Destruye el ítem
}
}
}
}
Lenguaje del código: HTML, XML (xml)
- Asigna el script a un objeto “poción” o ítem.
- Añade un Collider2D con “Is Trigger” activado.
Prueba el sistema
- Ejecuta el juego y verifica:
- El jugador pierde salud al tocar objetos enemigos.
- La barra de vida se actualiza.
- El jugador recupera salud al recoger ítems.
- Si la salud llega a 0, el jugador desaparece o se desactiva.
- Ajusta valores como maxHealth, daño e ítems de curación para personalizar la experiencia.
Con este tutorial has aprendido a implementar un sistema básico de vida en Unity, con opciones de recibir daño, curarse y manejar la muerte del personaje. Este sistema es versátil y puedes expandirlo con animaciones, efectos visuales o sonidos para hacerlo aún más atractivo.
¿Listo para seguir desarrollando? ¡Practica y personaliza tu proyecto!