Noticias

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

Problema con colisiones

Iniciado por R3N3, Noviembre 26, 2015, 06:19:49 PM

Tema anterior - Siguiente tema
     Hola, necesito ayuda con un juego tipo runner. En la foto superior, estoy chocando por un lado un contenedor, el cual no deberia traspasar, por el techo si colisiona bien. Es el characterController el que choca pero como ven las alas traspasan el cuerpo del contenedor que deberia ser solido. El contenedor tiene un boxCollider y IsTrigger en false, ademas de un rigidbody con restricion de movimiento y rotacion en todos los ejes, asi cuando lo choco el contenedor no se me va rodadndo por ahi. Este problema lo resolvi con codigo, pero quisiera sabersaber si hay una forma mas facil de reesolver el problema. Gracias.    

El componente CharacterController incluye su propio collider(una capsula), todo en uno, no utiliza el MeshCollider ni ningun otro Collider externo. Para utilizar el MeshCollider o cualquier otro tipo de Collider necesitas el componente Rigidbody.

Hola de nuevo. Esa foto que habia puesto no estaba actualizada, ya tenia agregado un rigidbody y seguia igual. Probe quitarle el characterController, deje solo el meshCollider y el rigidbody y muevo la nave asi:if(Input.GetKey( Up, Laft...... ya sabes pulsar el cursor)){transform.Translate(velocidad*Time.deltaTime.... dependiendo de la direccion pulsada);}De esta forma el objeto ejecuta la orden y no choca, atraviesa cualquier objeto mientras pulso por ejemplo left. Cómo harias tu un controller para este tipo de juego.

Debes aplicarle un addForce al rigidbody para que aunque estes pulsando la tecla de direccion que sea (left, right, up and down) siga teniendo en cuenta las colisiones...Con transform.Translate tendras muchos problemas con eso. Vendría a ser algo así:
if(Input.GetKey(....))
{
    Vector3 direccionFuerza = new Vector3(x,y,z);
    getComponent<Rigidbody>().addForce(direccionFuerza *velocidad*Time.deltaTime);
}
Lo suyo es que en el Vector3 direccionFuerza tengas la direccion en la que pulsas las teclas respecto a donde enfoca la camara, para que si pulsas la key left siempre sea la izquierda de donde está enfocando la camara en ese momento. Así es mas intuitivo el control... Si tienes dudas o no entiendes algo preguntame y te lo explico Espero que te sirva, saludos.


Hola, primero que nada saludos a mi compatriota! Segundo prueba con addforce y raycasts. Y sino la parte chapucera sería con raycast mover una esfera invisible, le pones un rigidbody al balón y el dedo lo hace todo.

Podrias mirarlo de arriba e instanciar una flecha que te indique la direccion (girando este con el centro de la pelota y modificando su direccion con Vector Inverse como dices tu, mas magnitud mas fuerza.

Cita de: leocub58 date=1449501434" data-ipsquote="" data-cite="leocub58" class="ipsQuoteHola, primero que nada saludos a mi compatriota! Segundo prueba con addforce y raycasts. Y sino la parte chapucera sería con raycast mover una esfera invisible, le pones un rigidbody al balón y el dedo lo hace todo.
Hola, probé con Cursor.position o algo asi, (no recuerdo bien ahora), me devolvía un vector, cree un cubo que su posició fuera este vector. De esta forma supuestamente pensé que cuando moviera el mouse, el cubo también lo haría y con él golpearía el balón, en cambio desaparece del campo, lo busqué y está en una posición fija que no se mueve. Cómo podría solucionar esto? Puedo lanzar un ray desde el mouse al campo y allí instanciar el objeto? Si es posible, cómo se hace? Podrías enseñarme? Gracias.

Etiquetas: