Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Estado de Ira | Comportamiento del Enemigo
Juego de Lucha en Unity
course content

Contenido del Curso

Juego de Lucha en Unity

Juego de Lucha en Unity

1. Sistema de Animación de Unity
2. Comportamiento del Jugador
3. Comportamiento del Enemigo
4. Mejorar el Juego
5. Mejorar el Juego de Flappy Bird

bookEstado 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.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 8
some-alt