Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Agregar Partículas | Mejorar el Juego
Juego de Lucha en Unity

bookAgregar Partículas

Explicación de los Cambios en el Método Update

private void Update()
{
    stateManager.UpdateStates(Time.deltaTime);
    scale.x = transform.position.x > player.position.x ? -1 : 1;
    transform.localScale = scale;
}

El método Update en el script del enemigo ahora incluye lógica para actualizar el gestor de estados, asegurar que el enemigo mire hacia el jugador y manejar un caso específico en el que el enemigo está en un DeathState. Esta lógica se añadió para evitar que el enemigo siga mirando al jugador después de haber muerto.

Componentes del Método

Actualización del StateManager

stateManager.UpdateStates(Time.deltaTime)

Esta línea actualiza el gestor de estados, pasando el tiempo transcurrido desde el último frame (Time.deltaTime). Garantiza que el estado actual se actualice correctamente en cada frame.

Comprobación de DeathState

if (stateManager.GetCurrentState() is DeathState) return;

Esta línea verifica si el estado actual es DeathState. Si el enemigo está en el DeathState, el método retorna inmediatamente, evitando cualquier actualización adicional para mirar al jugador u otros comportamientos.

Orientación hacia el Jugador

Las siguientes líneas aseguran que el enemigo siempre mire hacia el jugador:

scale.x = transform.position.x > player.position.x ? -1 : 1;
transform.localScale = scale;

scale.x = transform.position.x > player.position.x ? -1 : 1;

Esta línea comprueba si la posición x del enemigo es mayor que la posición x del jugador:

  • Si es verdadero, scale.x se establece en -1, haciendo que el enemigo mire a la izquierda;
  • Si es falso, scale.x se establece en 1, haciendo que el enemigo mire a la derecha.

transform.localScale = scale;

Esta línea aplica la escala actualizada al transform del enemigo, asegurando que mire en la dirección correcta.

Por qué lo hicimos de esta manera

Manejo del estado de muerte

Agregar la comprobación para DeathState asegura que el enemigo no continúe actualizando su comportamiento u orientación después de haber muerto. Esto es crucial para mantener la lógica del juego y evitar comportamientos inesperados después de que el enemigo debería estar inactivo.

Lógica centralizada

Al mover la lógica de orientación hacia el jugador al método Update, centralizamos este comportamiento, reduciendo la redundancia y mejorando el mantenimiento del código. Esto garantiza que el enemigo siempre mire hacia el jugador sin importar el estado actual, lo que simplifica el código específico de cada estado.

Explicación del manejo de la muerte del enemigo

public class DeathState : State
{
    Animator animator;

    public DeathState(Animator animator)
    {
        this.animator = animator;
    }

    public override void StartState()
    {
        isStateFinished = false;
        animator.SetBool("death", true);
    }

    public override void EndState()
    {
    }
}

La clase DeathState es un estado específico que gestiona el comportamiento del enemigo cuando muere.

Por qué lo hicimos de esta manera

Manejo del comportamiento de muerte

La clase DeathState gestiona específicamente el comportamiento del enemigo cuando muere, asegurando que la animación de muerte se reproduzca y que el estado se marque como finalizado.

Integración de animaciones

El uso de parámetros del animador garantiza que la animación de muerte esté correctamente sincronizada con el cambio de estado, proporcionando una experiencia fluida y realista.

Generación de partículas al morir el enemigo

if (health <= 0)
{
    stateManager.ChangeState(deathState);
    var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
    deathParticle.Play();
    Destroy(deathParticle.gameObject, 5);
}

Este código muestra cómo el enemigo gestiona su muerte cuando su salud llega a cero. Cambia al DeathState y reproduce un efecto de partículas de muerte.

Desglose del Código

Verificación de Salud

if (health <= 0)

Esta condición verifica si la salud del enemigo ha caído a cero o menos.

Transición a DeathState

stateManager.ChangeState(deathState)

Esta línea realiza la transición del enemigo al DeathState utilizando el StateManager.

Instanciación de Partículas de Muerte

var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity)

Esta línea crea una instancia del efecto de partículas de muerte en la posición del enemigo. deathParticles es un prefab que contiene el sistema de partículas para el efecto de muerte. Quaternion.identity asegura que las partículas no tengan rotación.

Reproducción de Partículas de Muerte

deathParticle.Play()

Esta línea reproduce el efecto de partículas instanciado.

Destrucción de Partículas de Muerte

Destroy(deathParticle.gameObject, 5)

Esta línea programa la destrucción del objeto GameObject del efecto de partículas después de 5 segundos, asegurando que no permanezca indefinidamente en el juego.

Por Qué Lo Hicimos Así

Gestión de Estados: La transición a DeathState asegura que el comportamiento de muerte del enemigo se gestione correctamente y que se ejecute cualquier lógica específica para el estado de muerte.

Efectos Visuales: Reproducir un efecto de partículas de muerte proporciona retroalimentación visual al jugador, mejorando la experiencia de juego.

question mark

¿Qué sucede con el sistema de partículas cuando la salud es menor o igual a cero?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

bookAgregar Partículas

Explicación de los Cambios en el Método Update

private void Update()
{
    stateManager.UpdateStates(Time.deltaTime);
    scale.x = transform.position.x > player.position.x ? -1 : 1;
    transform.localScale = scale;
}

El método Update en el script del enemigo ahora incluye lógica para actualizar el gestor de estados, asegurar que el enemigo mire hacia el jugador y manejar un caso específico en el que el enemigo está en un DeathState. Esta lógica se añadió para evitar que el enemigo siga mirando al jugador después de haber muerto.

Componentes del Método

Actualización del StateManager

stateManager.UpdateStates(Time.deltaTime)

Esta línea actualiza el gestor de estados, pasando el tiempo transcurrido desde el último frame (Time.deltaTime). Garantiza que el estado actual se actualice correctamente en cada frame.

Comprobación de DeathState

if (stateManager.GetCurrentState() is DeathState) return;

Esta línea verifica si el estado actual es DeathState. Si el enemigo está en el DeathState, el método retorna inmediatamente, evitando cualquier actualización adicional para mirar al jugador u otros comportamientos.

Orientación hacia el Jugador

Las siguientes líneas aseguran que el enemigo siempre mire hacia el jugador:

scale.x = transform.position.x > player.position.x ? -1 : 1;
transform.localScale = scale;

scale.x = transform.position.x > player.position.x ? -1 : 1;

Esta línea comprueba si la posición x del enemigo es mayor que la posición x del jugador:

  • Si es verdadero, scale.x se establece en -1, haciendo que el enemigo mire a la izquierda;
  • Si es falso, scale.x se establece en 1, haciendo que el enemigo mire a la derecha.

transform.localScale = scale;

Esta línea aplica la escala actualizada al transform del enemigo, asegurando que mire en la dirección correcta.

Por qué lo hicimos de esta manera

Manejo del estado de muerte

Agregar la comprobación para DeathState asegura que el enemigo no continúe actualizando su comportamiento u orientación después de haber muerto. Esto es crucial para mantener la lógica del juego y evitar comportamientos inesperados después de que el enemigo debería estar inactivo.

Lógica centralizada

Al mover la lógica de orientación hacia el jugador al método Update, centralizamos este comportamiento, reduciendo la redundancia y mejorando el mantenimiento del código. Esto garantiza que el enemigo siempre mire hacia el jugador sin importar el estado actual, lo que simplifica el código específico de cada estado.

Explicación del manejo de la muerte del enemigo

public class DeathState : State
{
    Animator animator;

    public DeathState(Animator animator)
    {
        this.animator = animator;
    }

    public override void StartState()
    {
        isStateFinished = false;
        animator.SetBool("death", true);
    }

    public override void EndState()
    {
    }
}

La clase DeathState es un estado específico que gestiona el comportamiento del enemigo cuando muere.

Por qué lo hicimos de esta manera

Manejo del comportamiento de muerte

La clase DeathState gestiona específicamente el comportamiento del enemigo cuando muere, asegurando que la animación de muerte se reproduzca y que el estado se marque como finalizado.

Integración de animaciones

El uso de parámetros del animador garantiza que la animación de muerte esté correctamente sincronizada con el cambio de estado, proporcionando una experiencia fluida y realista.

Generación de partículas al morir el enemigo

if (health <= 0)
{
    stateManager.ChangeState(deathState);
    var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
    deathParticle.Play();
    Destroy(deathParticle.gameObject, 5);
}

Este código muestra cómo el enemigo gestiona su muerte cuando su salud llega a cero. Cambia al DeathState y reproduce un efecto de partículas de muerte.

Desglose del Código

Verificación de Salud

if (health <= 0)

Esta condición verifica si la salud del enemigo ha caído a cero o menos.

Transición a DeathState

stateManager.ChangeState(deathState)

Esta línea realiza la transición del enemigo al DeathState utilizando el StateManager.

Instanciación de Partículas de Muerte

var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity)

Esta línea crea una instancia del efecto de partículas de muerte en la posición del enemigo. deathParticles es un prefab que contiene el sistema de partículas para el efecto de muerte. Quaternion.identity asegura que las partículas no tengan rotación.

Reproducción de Partículas de Muerte

deathParticle.Play()

Esta línea reproduce el efecto de partículas instanciado.

Destrucción de Partículas de Muerte

Destroy(deathParticle.gameObject, 5)

Esta línea programa la destrucción del objeto GameObject del efecto de partículas después de 5 segundos, asegurando que no permanezca indefinidamente en el juego.

Por Qué Lo Hicimos Así

Gestión de Estados: La transición a DeathState asegura que el comportamiento de muerte del enemigo se gestione correctamente y que se ejecute cualquier lógica específica para el estado de muerte.

Efectos Visuales: Reproducir un efecto de partículas de muerte proporciona retroalimentación visual al jugador, mejorando la experiencia de juego.

question mark

¿Qué sucede con el sistema de partículas cuando la salud es menor o igual a cero?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 1
some-alt