domingo, 30 de agosto de 2015

Plataformas 2D - Doble Salto y Marcadores de Suelo

Siguiendo con el anterior tutorial, este sera la continuacion, ahora crearemos un script de doble salto y le colocaremos restricciones, también verificaremos el suelo para que podamos crear una colisión mejor. Actualizare con un nuevo sprite y mejorando algunos aspectos.

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


Practica siempre para ir mejorando, la repetición y la constancia nos ayudan a mejorar, recuerda cada vez lo harás mejor, si te equivocas esta bien, permitirse equivocarse es la clave de mejora continua, así que permítete equivocarte mas seguido.

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.

7 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Ojala sigas con esto tus tutoriales son los únicos que me han servido en todo YT

    ResponderEliminar
    Respuestas
    1. Hola DA_LinkG1517, muchas gracias por tus palabras te lo agradezco de corazón, deseo continuar con el contenido, lo que me detiene en este momento es el trabajo, además no se cuanta gente este interesada ya que no he tenido retroalimentación y me gustaría saber si hay mas interesados, ya que este blog, lo comencé a manera de prueba y con el tiempo fue llegando mas visitantes pero nunca supe si lo estaba haciendo bien o si a alguien le interesaría así que en algún punto lo deje detrás y me ocupe en otras actividades. Si me pudieras compartir los temas que te gustaría aprender y ver si puedo hacer algo, intentare retomarlo, saludos. Los temas que se son Unity, UE4, incluso 3D con blender.

      Eliminar
  4. me pareece muy bien contenido sencillo facil se aprender continua con esto

    ResponderEliminar
    Respuestas
    1. Hola zas, muchas gracias, si, creo que si ya lo empecé debo retomarlo, aunque sea 1 o 2 personas, se que les puede ayudar bastante en su formación aunque sea algo básico para empezar, intentare encontrar un hueco para crear contenido ya que siempre me toma tiempo en organizarme y pensar en los temas de interés, por el momento será todo escrito por falta de un buen equipo, y si va bien, intentare hacer videotutoriales que seria lo ideal, saludos y gracias por tus palabras.

      Eliminar
  5. una pregunta a mi cuando salto una vez no me deja volver a saltar

    ResponderEliminar