1.- En el tutorial anterior comenzamos poniendo un boxcollider2D para este ejemplo lo cambiaremos por un Circlecollider2D primero tendremos que removerlo.
2.- Ahora colocaremos nuestro Circle Collider en un punto que quede el circulo casi para tocar el suelo usando por supuesto las herramientas de mover collider.
3.- Ahora crearemos un GameObject Vacio, para ello le daremos en el menu GameObject > Create Empty, le asignamos un nombre por ejemplo marcadorSuelo y lo colocamos por debajo del personaje y le daremos un marcador para identificarlo.
4.- Ahora que ya tenemos nuestro marcador se lo asignaremos al jugador para que se vuelva hijo al igual a la cámara para que cuando movamos a nuestro jugador la cámara se mueva junto con el.
5.- Ahora compondremos el script agregando nuevas funcionalidades, le damos doble clic y agregamos el siguiente código.
ControlarJugador.cs
using UnityEngine; using System.Collections; public class ControlarJugador : MonoBehaviour { //variable para saltar public float alturaSalto; //variable para la velocidad del movimiento public float velocidadMovimiento; //Agregaremos un transform para asignarlo con el gameobject vacio public Transform marcadorSuelo; //El radio del marcador del suelo private float radioMarcadorSuelo; //El Layer que crearemos del suelo public LayerMask layerSuelo; //variable booleana para identificar si esta en el suelo o no private bool estaEnSuelo; //variable booleana para el doble salto private bool dobleSalto; // Use this for initialization void Start () { } //funcion que se usa cuando usamos fisica void FixedUpdate() { //para verificar el suelo estaEnSuelo = Physics2D.OverlapCircle(marcadorSuelo.position, radioMarcadorSuelo, layerSuelo); } // Update is called once per frame void Update () { //condicion de doble salto if(estaEnSuelo) { dobleSalto = false; } //MOVIMIENTO DEL PERSONAJE //Saltar, usamos la barra espaciadora para saltar //ahora verificamos con nuestro gameobject si esta tocando el suelo if(Input.GetKeyDown(KeyCode.Space) && estaEnSuelo) { //mando a llamar a mi funcion saltar Saltar(); } //Aqui si cumple las condiciones podra realizar el doble salto if(Input.GetKeyDown(KeyCode.Space) && !dobleSalto && !estaEnSuelo) { //mando a llamar a mi funcion saltar Saltar(); dobleSalto = true; } //Mover a la derecha, usamos la tecla D para movernos a la derecha. if (Input.GetKey(KeyCode.D)) { GetComponent<Rigidbody2D> ().velocity = new Vector2 (velocidadMovimiento, GetComponent<Rigidbody2D>().velocity.y); } //Mover a la izquierda, usamos la tecla A para movernos a la izquierda. if (Input.GetKey(KeyCode.A)) { GetComponent<Rigidbody2D> ().velocity = new Vector2 (-velocidadMovimiento, GetComponent<Rigidbody2D>().velocity.y); } } //Funcion que nos hace saltar public void Saltar() { GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x , alturaSalto); } }
6.- Ahora en nuestro script tendremos que asignarle nuestro marcadordesuelo que es nuestro game object para ello seleccionamos nuestro gameobject y se lo asignamos en la parte donde dice marcadorSuelo de nuestro Script.
7.- Una vez hecho eso crearemos dos layer nuevas el cual se llamaran Jugador y Suelo respectivamente.
8.- Ahora en nuestro jerarquía seleccionamos todo el nivel creado y le asignamos el layer de Suelo.
9.- Ahora nos vamos a nuestro script y en la parte donde le dimos la variable layerSuelo ahi colocaremos el layer Suelo.
10.- Ahora, el marcador de suelo es un indicador para saber cuando estamos tocando el suelo, el cual nos servirá para poder la interacción con nuestro nivel, el gameobject vació colisiona con el suelo y nos manda un valor para poder realizar la condición del doble salto, si queremos verificar esta variable nos vamos en la parte de arriba del inspector y le daremos en modo debug y presionaremos play para ver en acción esta variable, podemos darnos cuenta al presionar al jugador y dirigirnos al script, recuerda regresarlo como estaba para no perderte.
13.- Ya que tenemos todo, probamos para saber como nos quedo. En el siguiente ejemplo realizaremos la animación básica del personaje, saltar, quieto y correr(jump, idle, run).
Si te gusta este sitio y deseas que esto continué vivo tu apoyo sera importante, puedes dar clic en la publicidad si lo deseas o puedes donar algo en Patreon si puedes permitírtelo, con esto el proyecto empezara a tener un objetivo y dejara de navegar sin rumbo y empezara a convertirse en una comunidad que ayudara unos a los otros, saludos y excelente día.