Noticias

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

FPS perpendicular a la normal.

Iniciado por JotaErre, Junio 27, 2017, 08:01:58 PM

Tema anterior - Siguiente tema
Muy buenas!!
 
 
 
Acudo con los sesos quemados de tanto Quaternion.
 
Como debería proceder para que mi player permanezca perpendicular a la normal detectada bajo el mismo? Claro está, sin perder el movimiento.
 
 
 
Muchas gracias de antemano por cualquier pista.

Junio 27, 2017, 09:22:52 PM #1 Ultima modificación: Junio 28, 2017, 12:06:37 AM por lightbug
Cita de: JotaErre date=1498586518Claro está, sin perder el movimiento.
   


Hola, Eso depende de como te muevas, supongo que te moves usando transform.forward o transform.right (relativo al player me refiero) y que la gravedad que usas es perpendicular ?¿,
 
Los pasos serian:
 


  •    Usar un tipo de cast para detectar la normal, un raycast o spherecast hacia el suelo y listo


  •    Guarda la normal del ray, asignar la gravedad como "-normal" (otra vez, si es asi como te manejas con la gravedad)


  •    Usa un funcion que sea llama lookRotation, lo que va a hacer es ajustar la rotacion de tu Player mirando a otro objeto de interes (la Normal). Le pasas un forward y un upward


https://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html
 
osea algo asi
 

player.transform.rotation = Quaternion.LookRotation (transform.forward , normal);

 
Me parece que primero te alinea el forward, que en tu caso no hace mucho, luego te rota hasta alinearte con el segundo parametro. Tenes que tener cuidado de usar un rayCast esto puede ser un caos, pensa en una rampa en el momento que estas por llegar arriba tu ray detecta una normal para arriba, como siempre, te cambia la rotacion:
 

 
Salvo que cada vez que tenes que hacer el cambio de rotacion (podes detectar esto simplemente comparando la normal vieja con la nueva) lleves al player a la posicion de contacto con el ray.
 
 

Cita de: JotaErre date=1498586518Acudo con los sesos quemados de tanto Quaternion.
   


me has hecho el día con esa frase Jajajjajaaj

Jajaja. Me alegro que te guste Leocub
 
Muchas gracias por tu respuesta Lightbug. Muy detallada. Haré algunas pruebas aplicando LookRottion.

Hola de nuevo!!
 
Me olvidaba de mencionar que el problema ya está resuelto.
 
He utilizado Quaternion.FromToRotation(transform.up, normalDetectada);
 
Muchas Gracias.

Etiquetas: