Limitar rotación a un solo eje Unity solucionado
Buenas noches, estoy portando todo lo que tenía hecho de Blitz3D a Unity, tanto modelados, como animaciones y lo peor, la programación, que ya me costó un hevo realizar con montones de ecuaciones y matemática y me encuentro con que si ya era complicado, ahora Unity te amarga mucho más la existencia con el tema de los ángulos cuaternión QUE No HAY QUIEN LOS ENTIENDA.
Programo al personaje para qué gire en una dirección (dependiendo de la tecla qué pulsemos y con relación al ángulo de la cámara, que ya es decir) y en momentos gira bien, pero de pronto le da algo al personaje y se pone a dar vueltas como una peonza porque me confunde los ángulos cuaternión con los euler y no sabe qué hacer.
He probado con comandos que te facilitan la vida en estos temas de ángulos en Unity, como son cuaternión, lokrotation y cuaternión, slerp, que básicamente lo que hacen es que el personaje mire hacia la posición de otro objeto girando siempre por el angulo más corto (como si de una cámara se tratase) y así me lo hace bien, pero tiene el invonceniente de que gira al personaje desde todos los ejes que considere necesarios para mirar al objeto, no solo desde el eje Y que es el eje que yo necesito rotar solamente, por lo que si el objeto que indica donde tiene que mirar está muy alto o muy bajo el personaje se gira hacia arriba o hacia abajo y eso impide que puedas programar fisicas y otras cosas en condiciones.
¿Sabe alguien si hay algún comando para indicarle que gire solo el eje Y hacia otro angulo? He probado de todo y no encuentro el puñetero comando, PAREZCO INGENIERO DE La NASA EN LUGAR DE PROGRAMADOR DE VIDEOJUEGOS CON TANTOS NUMEROS.
Limitar rotación a un solo angulo Unity solucionado
Por fin lo he solucionado. La MADRE QUE Me PARIO.
CONCLUSION:
Los ángulos Quaternion son infinítamente más fáciles de utilizar que los ángulos Euler sabiendo los comandos (no entiendo por que en el manual de Unity te dicen lo contrario) y si conviertes los ángulos Quaternion a Euler para qué sea más fácil de comprender y hacer operaciones no solo te va a doler mucho más la cabeza, si no que va a provocar fallos inesperados.
Para evitar problemas en rotaciones complejas mejor utilizar ya comandos de Unity que facilitan el trabajo con operaciones con Quaternion como son: http://unityscripts, blogspot.com/20...uaternión.html.
Y para conseguir limitar el angulo de giro un objeto en su rotación tan solo tenemos que crear una variable que contenga los vectores o ángulos cuaternión del objeto que queremos rotar y después limitar el eje que queramos escribiendo la variable, y, variable.x o variable, z = 0.
Ejemplo:
Variable = Objeto, transform, position - transform, position;
Variable, y = 0;.
Con esto ya podemos usar los valores que van a salir de Variable para cualquier rotación sin que el objeto gire desde otro eje que no sea el Y. Un saludo.