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!
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!