Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

(Ayuda) Juego Plataforma en 2D Unity3D

Iniciado por Alex16Lol, Septiembre 16, 2016, 07:26:18 PM

Tema anterior - Siguiente tema
Septiembre 16, 2016, 07:26:18 PM Ultima modificación: Septiembre 16, 2016, 11:54:44 PM por Alex16Lol
Buenas,
 
Estoy creando un juego de plataforma 2D y tengo un problemilla con las plataformas, me gustaria saber si alguien sabe como hacer que el personaje traspase las plataformas por debajo, pero al caer encima de la plataforma choque.(Atravesar como el juego Doodle Jump).
 
Muchas gracias, un saludo
 
Alex.

Septiembre 16, 2016, 11:26:34 PM #1 Ultima modificación: Septiembre 16, 2016, 11:31:11 PM por hammer

void OnTriggerEnter(Collider other){
         Vector3 dir = other.transform.position - transform.position;
         if (dir.y >0.0f && other.tag == "Player") {
               Rigidbody rig = other.GetComponent<Rigidbody> ();
               rig.velocity = new Vector3 (rig.velocity.x,0.0f,rig.velocity.z);
               rig.useGravity = false;
         }
             
   }
   void OnTriggerExit(Collider other){
         
         
         if (other.tag == "Player") {
               Rigidbody rig = other.GetComponent<Rigidbody> ();
               rig.useGravity = true;
         }
   }

 
Mira a ver si te sirve,no tengo nada a mano para poder probarlo xD
 
Se me olvidaba,la plataforma tiene que tener el collider en Trigger y si van a caminar enemigos puedes quitarle el if tag.
 
Otras manera seria lanzando raycast hacia arriba y hacia abajo del personaje y  mirando la velocidad en y del personaje segun esto configuras el collider,ignoreLayers,ignoreCollision,isTrigger, opciones hay muchas
 
Cheers

Septiembre 17, 2016, 11:19:09 AM #2 Ultima modificación: Septiembre 17, 2016, 12:01:47 PM por kaito
Una forma sería:
 
1) Lanzas una rayo hacia arriba, y otro rayo hacia abajo. A los objetos de arriba les poner una Layer, por ejemplo "Pasable", y a los de abajo le pones otro Layer, por ejemplo "Solido".
 
2) En la matriz de físicas del Editor(Menú Edit-->Project Settings-->Physics2D), desactivas las colisiones con el Layer "Pasable", y activas las colisiones con el Layer "Solido".
 
____
 
En lugar de un rayo, que puede producir errores al tener tan poco margen de detección, puedes utilizar algún método 'overlap' de Physics2D: https://docs.unity3d.com/ScriptReference/Physics2D.OverlapBox.html

Etiquetas: