¡Ataque al jugador! ¡En marcha! 💥

Find AI Tools
No difficulty
No complicated process
Find ai tools

¡Ataque al jugador! ¡En marcha! 💥

Contenido de la tabla de contenidos:

  1. Introducción
  2. Configuración del enemigo
    • 2.1 Función de ataque
    • 2.2 Normalización de la posición del jugador
    • 2.3 Movimiento del enemigo hacia la posición del jugador
    • 2.4 Flip hacia el jugador
  3. Animación del enemigo
    • 3.1 Configuración de la animación
    • 3.2 Animación de espera
    • 3.3 Animación de ataque de arriba y abajo
    • 3.4 Animación de ataque al jugador
    • 3.5 Animación de aplastamiento
  4. Transición entre estados
    • 4.1 Selección aleatoria del estado
    • 4.2 Transición de estado durante la animación de espera
    • 4.3 Transición de estado durante la animación de ataque al jugador
    • 4.4 Transición de estado durante la animación de aplastamiento
  5. Conclusiones

¡Ataque al jugador! ¡En marcha! 💥

En el video anterior, estuvimos trabajando en la configuración de nuestro enemigo. Ahora es el momento de añadir animaciones y completar su funcionalidad. En el video de hoy, vamos a centrarnos en la implementación de la animación de ataque y en la transición entre estados.

2. Configuración del enemigo

2.1 Función de ataque

Antes de sumergirnos en la animación, necesitamos configurar la funcionalidad de ataque del enemigo. Para Ello, vamos a crear una función llamada "ataque". En primer lugar, necesitamos obtener la posición del jugador, que será la posición actual del jugador menos nuestra propia posición. Esto nos dará la dirección en la que debemos movernos. Posteriormente, normalizaremos esta posición para asegurarnos de que la velocidad de movimiento no se vea afectada por el ángulo. Por último, moveremos al enemigo hacia la posición del jugador.

private Vector3 playerPosition;

void Attack()
{
    playerPosition = Player.GameObject.transform.position - transform.position;
    playerPosition = playerPosition.normalized;
    // Realizar ataque al jugador
}

2.2 Normalización de la posición del jugador

Dado que hemos obtenido la posición del jugador como un vector, necesitamos normalizarlo antes de utilizarlo para el movimiento del enemigo. Esto se debe a que el ángulo de movimiento afectará a la velocidad. Por lo tanto, multiplicaremos la posición del jugador por la velocidad de ataque del enemigo.

playerPosition = playerPosition.normalized;

2.3 Movimiento del enemigo hacia la posición del jugador

Una vez que hemos normalizado la posición del jugador, podemos utilizarla para mover al enemigo hacia esa posición. Utilizaremos la función Translate para cambiar la posición del enemigo basándonos en la posición relativa del jugador.

enemyRigidbody.velocity = playerPosition * attackPlayerSpeed;

2.4 Flip hacia el jugador

Para asegurarnos de que el enemigo siempre esté mirando hacia el jugador, vamos a implementar una función llamada "flipTowardsPlayer". En esta función, vamos a obtener la dirección del jugador y comprobar si está a la izquierda o a la derecha del enemigo. Dependiendo de la dirección del jugador y del enemigo, cambiaremos la escala X del enemigo para que se dé la vuelta correctamente.

void FlipTowardsPlayer()
{
    float playerDirection = Player.GameObject.transform.position.x - transform.position.x;

    if (playerDirection > 0 && transform.localScale.x < 0)
    {
        transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
    }
    else if (playerDirection < 0 && transform.localScale.x > 0)
    {
        transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
    }
}

3. Animación del enemigo

Ahora que tenemos configurada la funcionalidad del enemigo, es el momento de añadir las animaciones. Para ello, necesitaremos el panel de animación y el componente Animator. A continuación, crearemos las distintas animaciones necesarias para nuestro enemigo.

3.1 Configuración de la animación

En el panel de animación, haremos clic en "Create" para crear nuestras animaciones. La primera animación que necesitamos es la de espera, a la que llamaremos "Idle". Esta animación será la animación inicial del enemigo y se reproducirá mientras no realice ninguna acción.

3.2 Animación de espera

Para configurar la animación de espera, arrastraremos las imágenes correspondientes y las posicionaremos en intervalos de 5 fotogramas para que la animación se vea fluida. Esta animación de espera tendrá una duración de 2 segundos, lo que equivale a 120 fotogramas.

3.3 Animación de ataque de arriba y abajo

La siguiente animación que vamos a configurar es la de ataque de arriba y abajo. Esta animación consiste en que el enemigo se mueva de arriba a abajo mientras realiza su ataque. Al igual que en la animación de espera, la configuraremos utilizando las imágenes correspondientes y estableceremos una duración de 5 segundos, lo que equivale a 300 fotogramas.

3.4 Animación de ataque al jugador

La tercera animación que vamos a configurar es la de ataque al jugador. Esta animación consiste en un único fotograma que representa al enemigo atacando al jugador. La arrastraremos al panel de animación y la utilizaremos en el estado de ataque al jugador.

3.5 Animación de aplastamiento

Por último, vamos a crear una animación de aplastamiento. Esta animación se reproducirá cuando el enemigo golpee el suelo o una pared. Arrastraremos las imágenes correspondientes y estableceremos una duración de 10 fotogramas.

4. Transición entre estados

Ahora que tenemos nuestras animaciones configuradas, vamos a establecer las transiciones entre los diferentes estados del enemigo.

4.1 Selección aleatoria del estado

Queremos que el enemigo seleccione aleatoriamente entre el estado de ataque de arriba y abajo y el estado de ataque al jugador. Para ello, crearemos una función llamada "randomStatePicker" que generará un número aleatorio entre 0 y 1. Dependiendo del número generado, el enemigo seleccionará uno de los dos estados.

4.2 Transición de estado durante la animación de espera

Durante la animación de espera, queremos que el enemigo pueda transicionar al estado de ataque de arriba y abajo o al estado de ataque al jugador. Para ello, crearemos una transición desde el estado de espera hacia ambos estados. Utilizaremos una condición de tiempo de salida de 2 segundos para asegurarnos de que la animación de espera se reproduzca por completo antes de que se realice la transición.

4.3 Transición de estado durante la animación de ataque al jugador

Durante la animación de ataque al jugador, queremos que el enemigo pueda transicionar al estado de aplastamiento cuando toque el suelo. Para ello, crearemos una transición desde el estado de ataque al jugador hacia el estado de aplastamiento. Utilizaremos una condición de tiempo de salida de 1 segundo para asegurarnos de que la animación de ataque al jugador se reproduzca por completo antes de la transición.

4.4 Transición de estado durante la animación de aplastamiento

Después de reproducir la animación de aplastamiento, queremos que el enemigo vuelva al estado de espera. Para ello, crearemos una transición desde el estado de aplastamiento hacia el estado de espera. Utilizaremos una condición de tiempo de salida de 1 segundo para asegurarnos de que la animación de aplastamiento se reproduzca por completo antes de la transición.

5. Conclusiones

¡Enhorabuena! Ahora tienes un enemigo completamente funcional con animaciones y transiciones entre estados. Puedes personalizar las animaciones y añadir otros detalles para hacerlo aún más interesante. Sigue practicando y mejorando tus habilidades de programación en Unity.

¡Gracias por seguir este Tutorial y nos vemos en el próximo video! 😄

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.