No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Solución del reto: animación de los enemigos

33/41
Recursos

Aportes 6

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Logre hacer que los enemigos cambiaran de animacion dependiendo de a que direccion se dirijan.

Para ello el metodo update de enemigos lo tengo asi:

    private void Update()
    {
        direction = player.transform.position - transform.position;
        directionUnit = (Vector3)direction / direction.magnitude;
        transform.position += directionUnit * Time.deltaTime * enemySpeed;

        angle = Mathf.Atan2(directionUnit.y, directionUnit.x) * Mathf.Rad2Deg;
        
        anim.SetFloat("angle", angle);
    }

Genero el angulo en grados a apartir de la direccion unitaria, La direccion unitaria esta dada por el vector direccion dividida la magnitud del vector. El angulo se genera con un arcotangente.

Esta funcion genera como resultado en el 1er y 2do cuadrante del plano cartesiano de 0 a 180.

En el 3er y 4to cuadrante del plano cartesiano de -180 a 0.

En el animator agregue un parametro “angle” y organice las animaciones asi:

Default State = EnemyFront
Desde any State:
Transicion EnemyUp con 45 < angle < 135
Transicion EnemyRight con -45 < angle < 45
Transicion EnemyFront con -135 < angle < -45

Y para hacer la transicion a EnemyLeft la hago desde dos partes:
Desde EnemyUp con 135 < angle < 180
Desde EnemyFront -180 < angle < -135

La verdad el curso está bueno, pero tiene varios puntos flojos. Me parece que la forma de manejar las animaciones es flojisima. Es innecesario crear un objeto hijo solo para manejar el spriteRenderer y el animator para luego asignarlo al objeto Enemy padre (y asi con cada uno). Podiamos agarrar el objeto que teniamos, agregar el animator y al mismo el controlador para mover la dirección.
Por otro lado, no se explica como hacer que los enemigos cambien la animación si van de un lado a otro, o si suben o bajan. Eso hubiese estado bueno. Supongo no lo explicará y lo tendré que averiguar por mi cuenta…😑

Hice que si es game over, no puedas disparar, solo tienes que agregar este código en el if que detecta el click:

 && GameManager.SharedInstance.gameOver == false

a ponerlo en practica

¯_(ツ)_/¯

buen video se entiende mucho