Noticias

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

Ayuda please

Iniciado por Juan Abal, Octubre 12, 2016, 03:25:44 AM

Tema anterior - Siguiente tema
Hola gente, publico aca por que me acabo de registrar y no se porque no me deja publicar en ninguna otra seccion... (bueno esa era una duda que me aparecio en el camino pero no es la que vine a plantear)
 
Resulta que estuve renegando mucho queriendo rotar un objeto 90 grados... la camara... mi problema no fue ese, sino que gira en seco... (directamente pasa de 0 a 90 en el momento), y lo que realmente quiero hacer es rotar la camara pero que rote lento, al añadirle el Time.deltaTime queda girando y no para, alguien me ayuda por favor con esto? en este momento tengo asi mas o menos el fragmento de codigo...
 

if (rotacion == true && rotor == "90")
            {
                salto = ;
                transform.Rotate(90, , );
                camara.transform.Rotate(, , 90);
                rotacion = false;
      }

 
aca esta mas completo si necesitan mas datos :D http://pastebin.com/bSH87LAU

Cita de: Juan Abal date=1476235544Hola gente, publico aca por que me acabo de registrar y no se porque no me deja publicar en ninguna otra seccion... (bueno esa era una duda que me aparecio en el camino pero no es la que vine a plantear)
   
   
      Resulta que estuve renegando mucho queriendo rotar un objeto 90 grados... la camara... mi problema no fue ese, sino que gira en seco... (directamente pasa de 0 a 90 en el momento), y lo que realmente quiero hacer es rotar la camara pero que rote lento, al añadirle el Time.deltaTime queda girando y no para, alguien me ayuda por favor con esto? en este momento tengo asi mas o menos el fragmento de codigo...
   
   

if (rotacion == true && rotor == "90")
            {
                salto = ;
                transform.Rotate(90, , );
                camara.transform.Rotate(, , 90);
                rotacion = false;
      }

   
      aca esta mas completo si necesitan mas datos :D http://pastebin.com/bSH87LAU
   


Para rotar suavemente debes usar Quaternion.Slerp o Quaternion.Lerp
 
https://docs.unity3d.com/ScriptReference/Quaternion.Slerp.html
 
https://docs.unity3d.com/ScriptReference/Quaternion.Lerp.html
 
 
 
Si no te sale con la documentacion dilo y ya te ayudamos mas :P
 
Buena suerte

Cita de: Jose134 date=1476291308Para rotar suavemente debes usar Quaternion.Slerp o Quaternion.Lerp
   
   
      https://docs.unity3d.com/ScriptReference/Quaternion.Slerp.html
   
   
      https://docs.unity3d.com/ScriptReference/Quaternion.Lerp.html
   
   
       
   
   
      Si no te sale con la documentacion dilo y ya te ayudamos mas :P
   
   
      Buena suerte
   


gracias hermano, nunca entendi bien a los quaternion... pero esto esta facil, el tema es que, le mando el from, pero no se como asignar el to... y le mande un vector3 con las coordenadas, y me tiro para cualquier lado, despues le mande un quaternion con las coordenadas, y me pidio que le asigne algo en "W", (lo cual puse en 0) y la rotacion me la tira a la X y no a la Y, algo estoy haciendo mal...
 
 
 
 
 

camara.transform.rotation = Quaternion.Lerp(startposition.rotation, endposition.rotation, velocidadRotacionCamara * Time.deltaTime);
                velocidadRotacionCamara += 0.1f;
                if (velocidadRotacionCamara > 10)
                {
                    rotacion = false;
                }

 
asi lo deje, pero no se que asignarle a endposition... me das una manito?

Octubre 13, 2016, 03:01:02 PM #3 Ultima modificación: Octubre 13, 2016, 03:01:28 PM por Jose134
Cita de: Juan Abal date=1476357140gracias hermano, nunca entendi bien a los quaternion... pero esto esta facil, el tema es que, le mando el from, pero no se como asignar el to... y le mande un vector3 con las coordenadas, y me tiro para cualquier lado, despues le mande un quaternion con las coordenadas, y me pidio que le asigne algo en "W", (lo cual puse en 0) y la rotacion me la tira a la X y no a la Y, algo estoy haciendo mal...
   
   
       
   
   
       
   
   

camara.transform.rotation = Quaternion.Lerp(startposition.rotation, endposition.rotation, velocidadRotacionCamara * Time.deltaTime);
                velocidadRotacionCamara += 0.1f;
                if (velocidadRotacionCamara > 10)
                {
                    rotacion = false;
                }

   
      asi lo deje, pero no se que asignarle a endposition... me das una manito?
   


Para pasar de las rotaciones que nosotros conocemos (euler), donde expresamos cuantos grados rotamos cada eje, a quaternions hay que usar el metodo Quaternion.Euler()
 
Basicamente le pasas un Vector3 con la rotacion en euler y te da el quaternion que representa esa misma rotacion
 
 
 
Por si hay algo que no te haya quedado claro sobre el Lerp aqui tienes un codigo de ejemplo:
 

private Quaternion startRot; //Rotacion de la que partimos
public Vector3 targetRot; //Rotacion que queremos conseguir
private float progress; //Progreso del Lerp (0 = startRot; 1 = targetRot)
public float speed; //Velocidad
private void Awake () {
startRot = transform.rotation; //Detectamos de que rotacion partimos
}
private void Update () {
transform.rotation = Qutarnion.Lerp(startRot, Quaternion.Euler(targetRot), progress); //Ponemos la nueva rotacion
progress += Time.deltaTime * speed; //Aumentamos el progreso
}

 
 

Etiquetas: