Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Enviar Proyectil | 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

bookEnviar Proyectil

La clase Projectile es responsable de gestionar el comportamiento de los proyectiles que el enemigo puede lanzar al jugador. Esta clase maneja la configuración de la dirección y velocidad del proyectil, actualiza su movimiento y gestiona las colisiones.

Método Setup

Propósito: Este método configura el estado inicial del proyectil.

Parámetros: Toma un parámetro Vector2 direction para establecer la dirección en la que viajará el proyectil.

Acciones: Establece la dirección del proyectil, obtiene el componente Rigidbody2D adjunto al proyectil, rota el proyectil para que mire en la dirección en la que viajará y programa la destrucción del proyectil después de 6 segundos para evitar que exista indefinidamente.

Método Update

Propósito: Este método actualiza el movimiento del proyectil.

Acciones: Establece la velocidad del Rigidbody2D para mover el proyectil en la dirección especificada a la velocidad especificada.

Método OnTriggerEnter2D

Propósito: Este método maneja las colisiones con otros objetos.

Parámetros: Toma un parámetro Collider2D collision para detectar colisiones.

Acciones: Registra el nombre del objeto con el que colisionó el proyectil, verifica si el proyectil colisionó con un objeto etiquetado como "Player", y si el objeto tiene un componente que implementa la interfaz IGetAttacked, llama al método GetAttacked en ese componente para infligir daño. Finalmente, destruye el proyectil después de que golpea al jugador.

Por Qué Lo Hicimos Así

Modular y Reutilizable: La clase Projectile está diseñada para ser modular y reutilizable para cualquier tipo de proyectil que el enemigo pueda usar. Al establecer la dirección y la velocidad, se pueden crear varios proyectiles con diferentes comportamientos.

Manejo Eficiente del Movimiento: Usar el componente Rigidbody2D para el movimiento asegura que el proyectil se comporte de acuerdo con el sistema de física de Unity, proporcionando un movimiento suave y realista.

Detección de Colisiones y Manejo de Daño: El método OnTriggerEnter2D asegura que el proyectil pueda detectar colisiones con el jugador y aplicar daño adecuadamente, haciendo efectiva la interacción entre el proyectil y el jugador.

Clase SendProjectileState

La clase SendProjectileState es un estado específico que maneja el comportamiento del enemigo cuando lanza un proyectil. Esta clase hereda de la clase State e incluye métodos para iniciar, terminar e iniciar la acción de ataque con proyectiles.

Constructor

El constructor inicializa el SendProjectileState con un Animator para animaciones y una acción para enviar el proyectil. Establece estos valores en las variables miembro correspondientes.

Método StartState

Este método establece isStateFinished en false y activa la animación del proyectil configurando el parámetro booleano "projectil" en el animador a true.

Método StartAction

Este método llama a sendProjectileFunc, que ejecuta la acción definida para enviar el proyectil. Este método es típicamente llamado por un evento del animador para sincronizar el lanzamiento del proyectil con la animación.

Método EndState

Este método detiene la animación del proyectil estableciendo el parámetro booleano "projectil" en el animador a false.

Por Qué Lo Hicimos Así

Modular y Reutilizable: La clase SendProjectileState está diseñada para ser modular, permitiendo una integración flexible de diferentes comportamientos de envío de proyectiles mediante el uso de System.Action.

Integración de Animación: Al usar parámetros del animador, el estado asegura que el lanzamiento del proyectil esté sincronizado con la animación correspondiente, proporcionando una experiencia fluida y realista.

Función Enviar Proyectil

El método SendProjectile es responsable de crear y lanzar un proyectil hacia el jugador. Este método calcula la dirección desde el enemigo hacia el jugador, instancia el proyectil y lo configura para moverse en la dirección calculada.

Definición del Método y Componentes

Definición del Método: void SendProjectile(): Este método no devuelve un valor y está diseñado para manejar el lanzamiento del proyectil.

Componentes: Vector2 direction = (player.position - transform.position).normalized; Esta línea calcula la dirección desde el enemigo hacia el jugador restando la posición del enemigo de la posición del jugador. La parte .normalized asegura que el vector de dirección tenga una longitud de 1, convirtiéndolo en un vector unitario que solo indica dirección.

Instantiate(projectile, projectileSendingPosition.position, Quaternion.identity).Setup(direction); Esta línea crea una nueva instancia del proyectil en la posición especificada (projectileSendingPosition.position) sin rotación (Quaternion.identity). El método Setup se llama en el proyectil instanciado para establecer su dirección.

Vinculación con el Animador de Unity

Estamos llamando a la función StartAction usando eventos del animador. Esto nos permite especificar el cuadro exacto dentro de la animación del enemigo en el que queremos que se envíe el proyectil. Dado que la animación consta de muchos cuadros, es importante señalar el momento preciso para que ocurra esta acción.

¿Qué sucede cuando el proyectil colisiona con un objeto del juego etiquetado como "Player"?

¿Qué sucede cuando el proyectil colisiona con un objeto del juego etiquetado como "Player"?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

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