Contenido del Curso
Juego de Lucha en Unity
Juego de Lucha en Unity
Estado de Ira
Explicación de la Clase RageState
La clase RageState
es un estado específico que maneja el comportamiento del enemigo cuando entra en modo de furia. Esta clase hereda de la clase State
e incluye métodos para iniciar, actualizar y finalizar el estado de furia. También incluye acciones para agregar salud y cambiar el daño de ataque cuando el enemigo está en modo de furia.
Definición de la Clase y Variables Miembro
Definición de la Clase;
public class RageState : State
Esta clase hereda de la clase State
, lo que significa que debe implementar los métodos abstractos definidos en State
.
Variables Miembro:
Animator animator;
Controla las animaciones.System.Action addHealth;
Una acción para agregar salud al enemigo.System.Action changingAttackDmg;
Una acción para cambiar el daño de ataque del enemigo.
Constructor
El constructor inicializa el RageState
con los componentes necesarios: un Animator
para las animaciones y dos acciones para agregar salud y cambiar el daño de ataque. Establece estos valores en las variables miembro correspondientes.
Método StartState
Este método establece isStateFinished
en false
, activa la animación de furia configurando el parámetro booleano "rage" en el animador a true
, y llama a changingAttackDmg
para aumentar el daño del enemigo.
Método UpdateState
Este método se llama en cada fotograma y llama a addHealth
para agregar salud continuamente al enemigo mientras está en el estado de furia.
Método EndState
Este método detiene la animación de furia configurando el parámetro booleano "rage" en el animador a false
.
Por qué lo hicimos así
Comportamiento mejorado del enemigo;
El RageState
mejora el comportamiento del enemigo al aumentar su daño de ataque y agregar continuamente salud, haciéndolo más desafiante para el jugador;
Usar acciones (System.Action
) permite modificaciones flexibles y modulares a los atributos del enemigo.
Jugabilidad dinámica y atractiva:
Al hacer que el enemigo entre en un estado de furia, la jugabilidad se vuelve más dinámica y atractiva, ya que el jugador debe adaptarse al enemigo más poderoso y resistente.
Cómo funciona en contexto
Entrando en el estado de furia: Cuando el enemigo entra en el RageState
, se llama al método StartState
, activando la animación de furia y aumentando el daño de ataque del enemigo.
Durante la furia: El método UpdateState
se llama en cada fotograma. Continúa agregando salud al enemigo, haciendo que sea más difícil para el jugador derrotarlo.
Saliendo del estado de furia: Cuando el enemigo sale del RageState
, se llama al método EndState
, deteniendo la animación de furia.
Al estructurar el RageState
de esta manera, aseguramos que el enemigo pueda volverse significativamente más poderoso y resistente, proporcionando un mayor desafío para el jugador y mejorando la experiencia de juego en general.
Inicializar el estado de furia
Explicación
Inicialización de RageState:
rage = new RageState(animator, (...) => {...}, (...) => {...});
Crea una nueva instancia de RageState
llamada rage
;
Animador:
animator
: Pasa el animador para controlar las animaciones;
Aumentar salud:
() => { health += 10f * Time.deltaTime; }
Una función lambda que aumenta la salud en 10
unidades por segundo;
Cambiar daño de ataque:
() => { attack1.ChangeAttackDmg(15); attack2.ChangeAttackDmg(25); }
Una función lambda que cambia el daño de ataque de attack1
a 15
y attack2
a 25
.
Transición de Furia
El rageTransition
es una transición que mueve al enemigo a un RageState
cuando se cumplen ciertas condiciones. Esta transición está diseñada para hacer que el enemigo sea más formidable cuando su salud cae por debajo de un cierto umbral y aún no ha entrado en el estado de furia.
Definición de Transición
Condición:
La transición verifica si la salud del enemigo es menor o igual a 40 y si el enemigo aún no ha entrado en el estado de furia (haveRaged
es false
).
Si se cumplen ambas condiciones, establece haveRaged
a true
para asegurar que el enemigo solo entre en el estado de furia una vez y devuelve true
para activar la transición.
Porcentaje de Estado:
La transición utiliza new StatePourcentage(rage, 100f)
para indicar que cuando se cumple la condición, el enemigo pasará al RageState
con un 100% de probabilidad.
Por Qué Lo Hicimos Así
Activación de Comportamiento Poderoso: El rageTransition
permite que el enemigo se vuelva más poderoso cuando su salud es críticamente baja, aumentando su desafío para el jugador. Esta transición asegura que el enemigo solo entre en el estado de furia una vez, evitando transiciones repetidas al estado de furia.
Jugabilidad Dinámica y Desafiante: Al introducir el estado de furia bajo condiciones de salud críticas, la jugabilidad se vuelve más dinámica y desafiante, requiriendo que el jugador adapte su estrategia.
Cómo Funciona en Contexto
Chequeo de Salud: Durante el juego, a medida que el enemigo recibe daño, se monitorea su salud. Cuando la salud del enemigo cae a 40 o menos y aún no ha entrado en furia, se cumple la condición rageTransition
.
Activación del Estado de Furia: Una vez que se cumple la condición, haveRaged
se establece en true
, y la transición al RageState
se activa con un 100% de probabilidad.
Entrando en el Estado de Furia: Se inicia el RageState
, aumentando el daño de ataque del enemigo y añadiendo salud continuamente, haciendo que el enemigo sea significativamente más difícil de derrotar.
¡Gracias por tus comentarios!