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 (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 (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.Slerp.html)
https://docs.unity3d.com/ScriptReference/Quaternion.Lerp.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.Slerp.html)
https://docs.unity3d.com/ScriptReference/Quaternion.Lerp.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?
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
}