Noticias

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

Hacer un "reset" a la rotación

Iniciado por Jordi432, Noviembre 27, 2017, 05:37:25 PM

Tema anterior - Siguiente tema
Hola!
 
Sigo siendo novatísimo y no tengo mucha idea de mates, y ahora estoy un poco perdido. El caso es que tengo un objeto padre y uno hijo que pueden rotar los dos. Con el joystick roto el objeto padre y el objeto hijo (que se dibuja justo encima) rota automaticamente apuntando a los "rivales" que vaya encontrando. Lo que necesito ahora es que cuando deja de apuntar, este objeto hijo vuelva a la posicion inicial, que es simplemente una rotacion z de valor 0, eso aparece en el inspector cuando arranco el juego y esta todo bien posicionado. El juego es en 2D. Como podría hacer esto...porque parece simple asignar a la rotacion z un valor de 0 pero no lo consigo. He probado con Rotate() y con todo lo que he visto de transform.rotation con los Quaternions y demás, pero no encuentro la forma de hacerlo. Por lo que veo todo suma o resta una rotación a la que ya tiene, y no se como se debe calcular para que reste el angulo que ya tiene y se vaya a 0. Alguna sugerencia, por favor?
 
Gracias!

Noviembre 27, 2017, 06:00:32 PM #1 Ultima modificación: Noviembre 29, 2017, 09:38:45 AM por pioj



   
      transform.localRotation = Quaternion.Identity;
      transform.localEulerAngle = Vector3.zero;
   

[/quote]
 
¿A esto te refieres?

Hola, si querés tomar la rotación inicial para usarla luego podés guardar el quaternion (tiene info de todo lo relacionado con la rotación) en start o awake y luego asignarlo cuando quieras:
 

Quaternion rotacionInicial;
void Start()
{
rotacionInicial = transform.rotation;
}
...
...
//se da X condición ------------------------------------
transform.rotation = rotacionInicial;

 
 

Ostras, genial! Me ha funcionado perfecto la respuesta de francoe1, exactamente es así:

 
 

psjPrin.transform.localRotation = Quaternion.identity;

 
 
 
No lo entiendo, creo que esto ya lo habia probado y no me funcionó...alguna cosa escribiria mal....
 
El caso de la rotación inicial no me sirve porque el objeto padre cambia de rotación, y el hijo tiene que volver a la posicion 0 para alinearse bien a este, o sea, que no tiene que volver a la posicion inicial, sino a 0.
 
Sea como sea, mil gracias a los dos!!
 
Saludos!!
 
 

Cita de: Jordi432 date=1511806428Ostras, genial! Me ha funcionado perfecto la respuesta de francoe1, exactamente es así:

       
   
   

psjPrin.transform.localRotation = Quaternion.identity;

   
       
   
   
      No lo entiendo, creo que esto ya lo habia probado y no me funcionó...alguna cosa escribiria mal....
   
   
      El caso de la rotación inicial no me sirve porque el objeto padre cambia de rotación, y el hijo tiene que volver a la posicion 0 para alinearse bien a este, o sea, que no tiene que volver a la posicion inicial, sino a 0.
   
   
      Sea como sea, mil gracias a los dos!!
   
   
      Saludos!!
   
   
       
   


Tu problema seguramente fue utilizar la rotación global en vez de la local -
 
hay una gran diferencia entre transform.rotation y transform.localRotation - 
 
Suerte!
 
 

Etiquetas: