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.
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
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 (https://docs.unity3d.com/ScriptReference/Physics2D.OverlapBox.html)