Noticias

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

Estabilizar objeto volador!

Iniciado por DaniPV, Agosto 28, 2015, 01:58:39 PM

Tema anterior - Siguiente tema
Buenos dias. Hace dias que intento encontrar la solucion a un problema que tengo. Quiero que un objeto parecido a un helicoptero que se inclina hacia la derecha para girar hacia la derecha y lo mismo para la izquierda, de este modo se parece mas al real. El problema es que me gustaria que el objeto volviera a la posicion de rotacion inicial automàticamente una vez dejas de pulsar el boton de girar.De momento esto es lo que tengo de script:    public float lecturaVertical;
    public float lecturaHorizontal;
    public float fuerza = 10f;

    void Update () {

        transform.Translate (Vector3.forward * fuerza * Time.deltaTime);


        lecturaHorizontal = Input.GetAxis ("Horizontal");

        transform.Rotate (Vector3.up * lecturaHorizontal, Space.World);

        if (Input.GetKey (KeyCode.D)) {
            transform.Rotate (Vector3.back);
        } 

    
        if (Input.GetKey (KeyCode.A)) {
            transform.Rotate (Vector3.forward);
        }
    
    
    }
}
 

Hay una función de la clase Quaternion que cambia gradualmente la rotación de un objeto, si cuando pulses el botón usas esa función en vez de rotar directamente, además de tener una rotación mas suave después volverá al estado inicial:http://docs.unity3d.com/ScriptReference/Quaternion.Lerp.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/Quaternion.Lerp.htmlCualquier cosa avisa

Buenas Juanma, gracias por la ayuda. Lo he estado buscando pero no he encontrado ningun tutorial de como asignar unas teclas a quaternion. Ni tampoco de que debo hacer para que rote como me comentas.Sabes de algun tutorial que me pueda ayudar? Es algo simple?Gracias de nuevo.

Hombre, tutoriales si que hay, pero no suelen ser tan específicos... si es bastante simple:
lecturaH = Input.GetAxis("Horizontal");
//Crea una rotación que dependa del Input Horizontal para que
//cuando sea 0 se cree una rotacion 0
Quaternion giro = Quaternion.Euler(0,lecturaH,lecturaH);
//Aqui aplicas la rotacion, que cambiara cuando pulses "A" y "D" o cuando este
//girado y no las estés pulsando
transform.rotation = Quaternion.Lerp(transform.rotation, giro, 1);

Es sólo una base y puede tener errores, pero se puede hacer con algo así.

Etiquetas: