lunes, 4 de septiembre de 2017

Tutorial de plataformas 2D en Unity (XI)




           14.       Añadiendo animaciones:



Lo primero que tenemos que hacer es seleccionar nuestro personaje e ir a la pestaña "Animation" para crear nuestra animación “Muerte”.






 




Arrastramos nuestros sprites a la animación como hicimos con las animaciones de caminar y saltar. En esta ocasión será un único sprite:







Cuando hayamos acabado de editar la animación, le quitamos la casilla “Loop” para evitar que se repita y la arrastramos al “Animator”.



 




Ahora creamos un nuevo parámetro booleano en el “Animator” que llamaremos “Muerte”, y hacemos una transición desde cada una de las animaciones hasta la animación “Muerte”, con la condición de que el “bool” “Muerte” sea “True”.

Cuando lo tengamos, podemos crear un “Audio Source” en el objeto “Muerte” para asignarle el sonido que queramos que se reproduzca cuando nos maten.
Dentro del objeto “Muerte” crearemos y desactivaremos un objeto vacío llamado “CompruebaMuerte”.




 


Utilizaremos este objeto a modo de interruptor ya que se activará cuando nos maten y desactivará cuando comencemos a jugar de nuevo.








15.       Eliminando enemigos:


Lo primero que vamos a hacer es crear la animación que se debe reproducir cuando eliminamos a los enemigos.






Ahora vamos a pinchar sobre cualquier objeto, luego seleccionar el menú “Layer” y acto seguido pulsamos sobre “Add Layer”, ahí añadiremos dos capas con los nombres “Protagonista” y “Enemigos”.

 





Cuando las tengamos, le ponemos la capa “Protagonista” a nuestro personaje y hacemos lo propio con los enemigos.
Una vez hecho esto vamos al menú “Edit > Project Settings > Physics 2D” y ahí desactivamos las colisiones de los enemigos con los propios enemigos, tal como queda en la imagen.







Ahora en nuestro personaje, vamos a crear un objeto vacío con un “Box Collider 2D” justo en la parte inferior al que llamaremos “Salto” y pondremos como tag “Salto”.




 


Le asignaremos un script llamado “CompruebaMuerte” donde escribiremos lo siguiente.







Esto desactivará los Collider de nuestro personaje en el momento en que el comprobador de muerte se active.

Una vez hecho esto nos vamos a nuestro enemigo, creamos un script llamado “Muerte” y se lo asignamos, luego editamos el script añadiendo lo siguiente:


{

    public float Altura;
    public GameObject Personaje;
    public GameObject CompruebaMuerte;
    public Animator AnimadorMario;
    public Animator AnimadorGoomba;
    public GameObject Enemigo;

    private void OnTriggerEnter2D(Collider2D collision)
    {

        if (collision.tag == "Player")
        {
            Personaje.GetComponent<Rigidbody2D>().velocity = new Vector2(0, 0);
            AnimadorMario.SetBool("Muerte", true);
            Personaje.GetComponent<Rigidbody2D>().AddForce(new Vector2(0, Altura));
            CompruebaMuerte.SetActive(true);
            GetComponent<AudioSource>().Play();
            Personaje.GetComponent<CapsuleCollider2D>().enabled = false;
            Personaje.GetComponent<CapsuleCollider2D>().enabled = false;
            Personaje.GetComponent<BoxCollider2D>().enabled = false;
        }

        if (collision.tag == "Salto")
        {
            Enemigo.GetComponent<Rigidbody2D>().velocity = new Vector2(0, 0);
            GetComponent<CapsuleCollider2D>().enabled = false;
            GetComponent<BoxCollider2D>().enabled = false;
            AnimadorGoomba.SetBool("Muerte", true);
            GetComponent<Rigidbody2D>().AddForce(new Vector2(0, Altura));
            Personaje.GetComponent<Rigidbody2D>().AddForce(new Vector2(0, Altura + 10));

        }
    }
}


El script lo que hace es detectar si lo que choca contra el enemigo es el jugador o el collider “Salto” que acabamos de crear según el tag que tenga el objeto que colisione. Este script lo asignaremos tanto a los enemigos, como al destructor que colocamos bajo la pantalla para que eliminase los personajes que cayeran al vacío Acordaos luego de asignar cada elemento al script desde Unity como hemos hecho en las demás ocasiones.







Con todo lo que os he explicado a lo largo de este tutorial, deberíais ser capaces de continuar por vuestra cuenta, añadiendo nuevas escenas, otros enemigos con comportamientos distintos, y distintos tipos de jugabilidad. De todos modos, si queréis reproducir algún comportamiento distinto, contactad conmigo a través de Facebook o Twitter y estaré encantado de ayudaros con cualquier problema.

Espero que hayáis disfrutado con el tutorial, mi idea, más que explicaros como hacer un juego en 2D (hay mil tutoriales y con una programación más sencilla y eficaz que en este) era que aprendieseis que hay muchas maneras de hacer un mismo paso, y que muchas veces cuando os quedéis sin saber cómo avanzar, ver que dándole una vuelta de tuerca podéis conseguir averiguar el proceso para realizar el siguiente paso.

Recordad, si tenéis algún tipo de duda, podéis contactar conmigo a través de Twitter o Facebook. Un saludo.





Esto es todo por ahora, en el próximo tutorial comenzaremos la animación de caminar, recordad que podéis preguntar cualquier duda tanto en los comentarios, como en Twitter: @Lepra_Games o en la página de Facebook: Lepra Games.



No hay comentarios:

Publicar un comentario