Sistema de vida reutilizable en Unity
Clase 20 de 33 • Curso de VR con Unity
Contenido del curso
Creando nuestro mundo 3D en Unity
- 6

Crear terreno 3D en Unity con Standard Assets
08:42 min - 7

Creación de Escenarios en Unity: Terreno y Erosión Realista
10:19 min - 8

Texturización de terrenos en Unity: creación de entornos realistas
10:56 min - 9

Cómo pintar árboles en Unity para VR
06:54 min - 10

Añadir césped y efectos de viento en Unity 3D
06:57 min - 11

Configurar skybox de seis lados en Unity
06:53 min - 12

Integración de Armas y Escudo en Realidad Virtual con HTC Vive
12:09 min
El realismo del VR: Programando a nuestro personaje
- 13

Programación de Lógica de Armas en Realidad Virtual
10:22 min - 14

Mapeado de controles HTC Vive en Unity
10:08 min - 15

Controles VR: grip y gatillo en Unity
10:02 min - 16

Configuración de Bolas de Fuego en Unity para Realidad Virtual
09:21 min - 17

Disparo de bola de fuego en VR
10:11 min - 18

Corrección de bugs: recarga y audio en armas Unity
04:44 min - 19

Colliders y Rigidbody en el diseño de personajes y armas en Unity
08:25 min - 20

Sistema de vida reutilizable en Unity
Viendo ahora
El realismo del VR: Creación de HUD (Heads Up Display) y generando enemigos
- 21

HUD en VR: canvas anclado a cámara
08:50 min - 22

Configuración de Barras de Vida y Maná en Unity
05:54 min - 23

Programación de Daño en Videojuegos: Lógica de Armas y Magia
11:07 min - 24

Slider Unity: vida y maná en un script
08:00 min - 25

Cómo configurar un dragón enemigo en Unity
11:40 min - 26

Colliders y barras de vida para dragones
08:31 min - 27

Animaciones de Muerte y Desaparición de Enemigos en Unity
10:01 min - 28

Cómo crear oleadas de dragones con portal
11:24 min
El realismo del VR: Programando la IA de nuestro juego
Un sistema de vida claro y reutilizable marca la diferencia en proyectos Unity. Aquí verás cómo estructurar una clase de vida genérica para jugador y enemigos, usando propiedades con getter y setter, un field privado con SerializeField y lógica preparada para el umbral de muerte. Todo con un enfoque limpio, escalable y fácil de mantener.
¿Cómo crear un sistema de vida genérico en Unity con C#?
La idea clave: una única clase controla la vida de personajes y enemigos. Se define una propiedad pública con getter y setter para encapsular el acceso, y un field privado para almacenar el valor real. Gracias a SerializeField, el valor puede modificarse desde el Editor de Unity sin perder encapsulación.
- Una clase, dos usos: mismo código para jugador y enemigos.
- Encapsulación: control seguro con getter y setter.
- Edición en editor: SerializeField permite ajustar vida sin tocar código.
- Extensible: el setter centraliza reglas y reacciones a cambios.
¿Por qué usar propiedades con getter y setter en la vida?
- Control del estado: el setter decide qué pasa cuando cambia la vida.
- Reglas claras: se pueden limitar rangos o disparar eventos.
- Consistencia: todos modifican la vida a través de la misma puerta.
- Legibilidad y mantenimiento: nombres como
HealthPointsfacilitan la intención.
¿Qué estructura básica tiene el script de vida?
Este esqueleto resume la implementación descrita: field privado serializado, propiedad pública con getter y setter, y sin Update (no hace falta). Se deja un TODO para gestionar la muerte.
using UnityEngine;
public class Health : MonoBehaviour
{
[SerializeField] private float healthPoints = 100f; // Almacenamiento real, editable en el editor.
public float HealthPoints
{
get { return healthPoints; } // Acceso controlado.
set
{
healthPoints = value; // Asignación centralizada.
if (healthPoints <= 0f)
{
// TODO: gestionar la muerte del personaje/enemigo
// (destruir, aplicar gravedad, animaciones, etc.).
}
}
}
void Start()
{
// Preparación futura si se necesita.
}
// void Update() { } // Eliminado: no es necesario para este sistema.
}
Puntos a notar:
- La propiedad HealthPoints en PascalCase y el field healthPoints en camelCase.
- El parámetro implícito del setter es value: representa el nuevo valor asignado.
- El field es private y serializado: editable en el editor, inaccesible desde fuera por código.
¿Qué decisiones de diseño mejoran el control de la vida?
La combinación de propiedad pública y campo privado permite validar, reaccionar a cambios y mantener el estado consistente. El setter es el lugar natural para aplicar reglas como el umbral de muerte.
¿Cómo ayuda SerializeField en el editor de Unity?
- Permite ajustar puntos de vida iniciales desde el inspector.
- Mantiene la encapsulación: no se expone el field como público.
- Facilita pruebas rápidas sin recompilar código.
¿Cómo y cuándo reaccionar a umbrales de vida?
- Comprobar en el setter:
if (healthPoints <= 0f) { ... }. - Preparar la gestión de muerte: destruir enemigo, aplicar gravedad o animaciones.
- Dejar el TODO visible: ayuda a integrar lógica específica más adelante.
¿Qué viene después para completar el sistema de combate?
La siguiente pieza es un script de daño que reduzca HealthPoints de forma segura usando el setter. Así toda modificación pasa por la misma lógica y se activan las reacciones necesarias.
¿Qué conviene preparar para el script de daño?
- Referenciar el componente
Healthdel objetivo. - Modificar vida solo a través de
HealthPoints(nunca el field privado). - Definir cómo se aplica el daño: golpes puntuales o decrementos progresivos.
¿Tienes dudas o ideas para ampliar la lógica de muerte o efectos al bajar de ciertos porcentajes de vida? Cuéntalo y seguimos construyendo juntos.