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

book
Enviar Proyectil

csharp

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

Método Setup

csharp

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

Parámetros: Recibe 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 apunte 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

csharp

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

Método OnTriggerEnter2D

csharp

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

Parámetros: Recibe 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 impactar 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.

Gestión eficiente del movimiento: Utilizar el componente Rigidbody2D para el movimiento garantiza que el proyectil se comporte de acuerdo con el sistema de físicas de Unity, proporcionando un movimiento fluido y realista.

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

Clase SendProjectileState

csharp

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

Constructor

El constructor inicializa SendProjectileState con un Animator para las animaciones y una acción para enviar el proyectil. Asigna estos valores a 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 suele ser invocado 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 configurando el parámetro booleano "projectil" en el animador a false.

Por qué lo hicimos de esta manera

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

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

Función Send Projectile

csharp

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 que se desplace en la dirección calculada.

Definición del método y componentes

Definición del método: void SendProjectile(): Este método no retorna ningún valor y está diseñado para gestionar 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 la 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 Animator de Unity

Estamos llamando a la función StartAction utilizando eventos del animator. Esto nos permite especificar el fotograma 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 fotogramas, es importante identificar el momento preciso para que ocurra esta acción.

question mark

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

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 9

Pregunte a AI

expand

Pregunte a AI

ChatGPT

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

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

book
Enviar Proyectil

csharp

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

Método Setup

csharp

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

Parámetros: Recibe 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 apunte 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

csharp

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

Método OnTriggerEnter2D

csharp

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

Parámetros: Recibe 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 impactar 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.

Gestión eficiente del movimiento: Utilizar el componente Rigidbody2D para el movimiento garantiza que el proyectil se comporte de acuerdo con el sistema de físicas de Unity, proporcionando un movimiento fluido y realista.

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

Clase SendProjectileState

csharp

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

Constructor

El constructor inicializa SendProjectileState con un Animator para las animaciones y una acción para enviar el proyectil. Asigna estos valores a 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 suele ser invocado 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 configurando el parámetro booleano "projectil" en el animador a false.

Por qué lo hicimos de esta manera

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

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

Función Send Projectile

csharp

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 que se desplace en la dirección calculada.

Definición del método y componentes

Definición del método: void SendProjectile(): Este método no retorna ningún valor y está diseñado para gestionar 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 la 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 Animator de Unity

Estamos llamando a la función StartAction utilizando eventos del animator. Esto nos permite especificar el fotograma 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 fotogramas, es importante identificar el momento preciso para que ocurra esta acción.

question mark

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

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

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