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

bookEstado de Dash

Controlador de Animación

public class AnimatorController : MonoBehaviour
{
    [SerializeField] Enemy enemy;

    public void FinishMovement()
    {
        enemy.FinishMovement();
    }

    public void EndCurrentState()
    {
        enemy.EndCurrentState();
    }
}

Propósito de AnimatorController

La clase AnimatorController está diseñada para gestionar y activar comportamientos del enemigo a través de eventos del animador. Esto permite una integración fluida de las transiciones de animación y los cambios de estado, asegurando que el comportamiento del enemigo coincida con sus animaciones.

Definición de la Clase y Variable Miembro

Definición de la Clase: public class AnimatorController : MonoBehaviour define una clase que hereda de MonoBehaviour, lo que permite que se adjunte a un GameObject en Unity.

Variable Miembro: [SerializeField] Enemy enemy; es un campo serializado que permite vincular un objeto Enemy al AnimatorController directamente desde el Inspector de Unity. La variable enemy es una referencia al script del enemigo, que contiene funciones que controlan el comportamiento del enemigo.

Métodos

Método FinishMovement: public void FinishMovement(): Este método llama a enemy.FinishMovement(). Está diseñado para ser llamado por un evento del animador, indicando el final de una animación de movimiento.

Método EndCurrentState: public void EndCurrentState(): Este método llama a enemy.EndCurrentState(). Está destinado a ser llamado por un evento del animador para señalar el final del estado actual.

Integración con eventos del animador

Eventos del animador: Los eventos del animador son eventos especiales que pueden colocarse en las líneas de tiempo de animaciones dentro del Animator de Unity. Estos eventos pueden llamar funciones en scripts adjuntos al mismo GameObject o a sus hijos.

Cómo funciona: Durante una animación, como una animación de correr o atacar, puntos específicos en la línea de tiempo pueden activar eventos.

Dash State

public class DashState : State
{
    Rigidbody2D rb;
    Animator animator;
    Transform player;
    float speed;
    Vector2 scale;
    Vector2 velocity;

    bool stopDashing = false;

    public DashState(Rigidbody2D rb, Animator animator, Transform p, float DashSpeed)
    {
        this.animator = animator;
        player = p;
        this.speed = DashSpeed;
        this.rb = rb;
        scale = rb.transform.localScale;
        velocity = new Vector2();
    }

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

    public override void FinishMovement()
    {
        stopDashing = true;
    }

    public override void UpdateState(float deltaTime)
    {
        if (stopDashing) return;

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

        velocity.x = scale.x * speed;
        rb.velocity = velocity;
    }

    public override void EndState()
    {
        animator.SetBool("dash", false);
    }
}

Explicación de la clase DashState

La clase DashState es un estado específico que gestiona el comportamiento de deslizamiento (dash) del enemigo. Esta clase hereda de la clase State e incluye métodos para iniciar, actualizar y finalizar el estado de dash, así como para manejar el evento de finalización del movimiento.

Constructor

El constructor inicializa la DashState con los componentes necesarios: un Rigidbody2D para el movimiento, un Animator, un Transform para el jugador y una velocidad de dash. Establece la escala inicial e inicializa el vector de velocidad.

Método StartState

Este método establece isStateFinished en false y activa la animación de dash configurando el parámetro booleano "dash" en el animator a true. También restablece la bandera stopDashing a false.

Método FinishMovement

Este método establece stopDashing en true, lo que detendrá la acción de deslizamiento en el método UpdateState.

Método UpdateState

Este método actualiza la posición y orientación del enemigo en función de la posición del jugador. Si stopDashing es true, el método retorna de inmediato, deteniendo actualizaciones adicionales. Ajusta la escala del enemigo para que mire al jugador, calcula la velocidad según la rapidez y aplica esta velocidad al Rigidbody2D.

Método EndState

Este método detiene la animación de deslizamiento estableciendo el parámetro booleano "dash" en el animador a false.

Por qué lo hicimos de esta manera

El indicador stopDashing permite un control preciso sobre cuándo debe detenerse el dash, haciendo que el comportamiento sea más sensible a los eventos del juego. Al actualizar continuamente la posición y dirección del enemigo, el DashState garantiza que el enemigo pueda desplazarse rápidamente y con precisión hacia el jugador. El uso de parámetros del animador asegura que las animaciones del enemigo estén correctamente sincronizadas con sus movimientos, proporcionando una experiencia fluida y realista.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

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

bookEstado de Dash

Controlador de Animación

public class AnimatorController : MonoBehaviour
{
    [SerializeField] Enemy enemy;

    public void FinishMovement()
    {
        enemy.FinishMovement();
    }

    public void EndCurrentState()
    {
        enemy.EndCurrentState();
    }
}

Propósito de AnimatorController

La clase AnimatorController está diseñada para gestionar y activar comportamientos del enemigo a través de eventos del animador. Esto permite una integración fluida de las transiciones de animación y los cambios de estado, asegurando que el comportamiento del enemigo coincida con sus animaciones.

Definición de la Clase y Variable Miembro

Definición de la Clase: public class AnimatorController : MonoBehaviour define una clase que hereda de MonoBehaviour, lo que permite que se adjunte a un GameObject en Unity.

Variable Miembro: [SerializeField] Enemy enemy; es un campo serializado que permite vincular un objeto Enemy al AnimatorController directamente desde el Inspector de Unity. La variable enemy es una referencia al script del enemigo, que contiene funciones que controlan el comportamiento del enemigo.

Métodos

Método FinishMovement: public void FinishMovement(): Este método llama a enemy.FinishMovement(). Está diseñado para ser llamado por un evento del animador, indicando el final de una animación de movimiento.

Método EndCurrentState: public void EndCurrentState(): Este método llama a enemy.EndCurrentState(). Está destinado a ser llamado por un evento del animador para señalar el final del estado actual.

Integración con eventos del animador

Eventos del animador: Los eventos del animador son eventos especiales que pueden colocarse en las líneas de tiempo de animaciones dentro del Animator de Unity. Estos eventos pueden llamar funciones en scripts adjuntos al mismo GameObject o a sus hijos.

Cómo funciona: Durante una animación, como una animación de correr o atacar, puntos específicos en la línea de tiempo pueden activar eventos.

Dash State

public class DashState : State
{
    Rigidbody2D rb;
    Animator animator;
    Transform player;
    float speed;
    Vector2 scale;
    Vector2 velocity;

    bool stopDashing = false;

    public DashState(Rigidbody2D rb, Animator animator, Transform p, float DashSpeed)
    {
        this.animator = animator;
        player = p;
        this.speed = DashSpeed;
        this.rb = rb;
        scale = rb.transform.localScale;
        velocity = new Vector2();
    }

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

    public override void FinishMovement()
    {
        stopDashing = true;
    }

    public override void UpdateState(float deltaTime)
    {
        if (stopDashing) return;

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

        velocity.x = scale.x * speed;
        rb.velocity = velocity;
    }

    public override void EndState()
    {
        animator.SetBool("dash", false);
    }
}

Explicación de la clase DashState

La clase DashState es un estado específico que gestiona el comportamiento de deslizamiento (dash) del enemigo. Esta clase hereda de la clase State e incluye métodos para iniciar, actualizar y finalizar el estado de dash, así como para manejar el evento de finalización del movimiento.

Constructor

El constructor inicializa la DashState con los componentes necesarios: un Rigidbody2D para el movimiento, un Animator, un Transform para el jugador y una velocidad de dash. Establece la escala inicial e inicializa el vector de velocidad.

Método StartState

Este método establece isStateFinished en false y activa la animación de dash configurando el parámetro booleano "dash" en el animator a true. También restablece la bandera stopDashing a false.

Método FinishMovement

Este método establece stopDashing en true, lo que detendrá la acción de deslizamiento en el método UpdateState.

Método UpdateState

Este método actualiza la posición y orientación del enemigo en función de la posición del jugador. Si stopDashing es true, el método retorna de inmediato, deteniendo actualizaciones adicionales. Ajusta la escala del enemigo para que mire al jugador, calcula la velocidad según la rapidez y aplica esta velocidad al Rigidbody2D.

Método EndState

Este método detiene la animación de deslizamiento estableciendo el parámetro booleano "dash" en el animador a false.

Por qué lo hicimos de esta manera

El indicador stopDashing permite un control preciso sobre cuándo debe detenerse el dash, haciendo que el comportamiento sea más sensible a los eventos del juego. Al actualizar continuamente la posición y dirección del enemigo, el DashState garantiza que el enemigo pueda desplazarse rápidamente y con precisión hacia el jugador. El uso de parámetros del animador asegura que las animaciones del enemigo estén correctamente sincronizadas con sus movimientos, proporcionando una experiencia fluida y realista.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

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