Hola gente, tengo otro problemilla me quiero hacer un FirstPerson COntroller casero casero (mentira me robe el MouseLook :whistle: )
Tengo una Camara y un Body (cuerpo,es un Capsule), basicamente quiero que el body solo rote en y, pero no en x y z (segun mis coordenadas), entonces en el script puse lo siguiente:
Body.transform.rotation.y = Camara.transform.rotation.y;
Me dice : no se puede modificar el valor de transform.rotation porque no es una variable
pero si hago lo siguiente si funciona (pero para todas las dimensiones):
Body.transform.rotation = Camara.transform.rotation;
Porque pasa esto?
Saludos
Pasa porque por casualidades de la vida, no puedes asignar un valor a la
[...].transform.rotation pero no a uno de sus ejes individualmente. ¿ Que puedes hacer entonces ? ... Pues asignar la rotación a los tres ejes.
Body.transform.rotation = new Vector3(Body.transform.rotation.x,
Camara.transform.rotation.y,
Body.transform.rotation.z);
Ya esta. Las rotaciones en X y Z se mantienen iguales, pero la rotación Y la toma de la camera.
Como apunte extra, si te interesa optimizar el rendimiento, es mejor usar una variable predefinida para eso. Es mas "económico".
Primero defines una variable privada de tipo Vector3. Por ejemplo yo la llamo "auxVector3".
Asignas los valores a esa variable.
Y finalmente asignas la rotación usando dicha variable.
auxVector3.x = Body.transform.rotation.x;
auxVector3.y = Camara.transform.rotation.y;
auxVector3.z = Body.transform.rotation.z;
Body.transform.rotation = auxVector3;
Con eso te ahorras el de tener que "crear" una variable cada vez. Solo tienes que modificar una variable ya existente.
PD: El código esta escrito en C#. Supongo que en JavaScript debe de ser muy parecido. Pero sea como sea, el concepto y solución de tu problema es el mismo.
Respuesta mas clara que esta no existe!!
Muchisimas Gracias!!!
lo hice asi, creo que mas directo, me habia olvidado que tengo que trabajar con vectores :woohoo:
Body.transform.rotation = Quaternion.Euler(0, Main_Camera.transform.rotation.eulerAngles.y , 0);
Buenas, estaba volviéndome loco con este tema, pues no comprendía porque no dejaba realizar el giro solo en el eje Y, y lo mas importante no sabía como solucionarlo. Por lo que gracias Quel y lightbug por las soluciones. Por fin salgo del atasco que tenía al respecto.Saludos,