Aprende a desarrollar aplicaciones gráficas 2D y 3D paso a paso.
Programacion Grafica: Desarrollo 2D/3D con C++ y DirectX/OpenGL/GLUT/SDL - Windows/Linux


  Crear una cuenta
 • Portada • Descargas • Tu Cuenta • 
Menú
 Portada
 Noticias
 Archivo de Noticias
 Temas
 Descargas
 Inicio
 Ver Nuevas
 Más Popular
 Más Votadas
 Contenido
 Contenido
 Secciones
 Enciclopedia
 Revisiones
 FAQ
 Tus Opciones
 Tu Cuenta
 Mensajes Privados
 Recomiéndenos
 Buscar
 Diarios
 Contacto
 Enlaces Web
 Inicio
 Enviar Enlace
 Ver Nuevos
 Más Popular
 Más Valorados
 Estadísticas
 Inicio
 Detalladas
 Top 10
 
Estadísticas
 
Tutorial 14 - Movimiento-3D (Avión) 
DirectX/Opengl

Esta vez vamos a salir volando. Como en el ejemplo anterior, habría que añadir física para reproducir fielmente el vuelo de un avión, ya que cuando giramos, sólo es un giro sobre el eje Z y nuestro "avión" no se desplaza lateralmente ni pierde altura como debería ser. Pero bueno.



Para volar, sólo tenemos que realizar unos giros diferentes a como lo hacíamos en el ejemplo anterior. Según pulsemos las teclas del cursor, elevará o bajará el morro (pitch en inglés) o girará en el eje Z (alabeo o roll en inglés).


    ///////////////////////////////////////////////////////////////////////////////
    ///     CheckMovement: Comprueba si hay pulsada una tecla.
    ///
    ///     @param  long msElapsed: misilegundos transcurridos entre cada frame.
    ///
    ///     @return  nada
    ///////////////////////////////////////////////////////////////////////////////
    void GraphicApplication::CheckMovement( long msElapsed )
    {
        float speed= m_Player.GetSpeed();

        if ( m_KeysPressed[KEY_PLUS] || m_KeysPressed[KEY_NUMERIC_PLUS] )
        {
            m_Player.SetSpeed( speed + OBJECT_ACCELERATION );   // Aceleramos
        }

        if ( m_KeysPressed[KEY_MINUS] || m_KeysPressed[KEY_NUMERIC_MINUS] )
        {
            m_Player.SetSpeed( speed - OBJECT_ACCELERATION );   // Frenamos
        }

        m_Player.Forward( speed * msElapsed );                      // Avanzamos


    // ********************************* NEW **************************************

        if ( m_KeysPressed[KEY_UP] || m_KeysPressed[''W''] )
        {
            m_Player.Pitch  ( -OBJECT_TURN * msElapsed  );          // Picado
        }
        else if ( m_KeysPressed[KEY_DOWN] || m_KeysPressed[''S''] )
        {
            m_Player.Pitch  (  OBJECT_TURN * msElapsed );           // Elevación
        }

        // ¿Giramos?
        if ( m_KeysPressed[KEY_LEFT] || m_KeysPressed[''A''] )
        {
            m_Player.Roll ( -OBJECT_TURN  * msElapsed );            // Alabeo Izquierda
        }
        else if ( m_KeysPressed[KEY_RIGHT] || m_KeysPressed[''D''] )
        {
            m_Player.Roll (  OBJECT_TURN  * msElapsed );            // Alabeo Derecha
        }

    // ****************************************************************************
    }

Podéis descargaros el ejemplo: tutorial-14.zip



Nota: Compartir en Facebook
Enviado el Miércoles, 05 septiembre a las 22:16:47 por administrador
 
Enlaces Relacionados
· Más Acerca de DirectX/Opengl
· Noticias de administrador


Noticia más leída sobre DirectX/Opengl:
Tutorial 16 - Movimiento-3D - (Tercera Persona)

 
Votos del Artículo
Puntuación Promedio: 5
votos: 2


Por favor tómate un segundo y vota por este artículo:
Excelente
Muy Bueno
Bueno
Regular
Malo

 
Opciones

 Versión Imprimible  Versión Imprimible

 
"Tutorial 14 - Movimiento-3D (Avión)" | Entrar / Crear Cuenta | 0 Comentarios
Los comentarios son propiedad de quien los envió. No somos responsables por su contenido.

No se permiten comentarios Anónimos, Regístrese por favor

Sitio potenciado por NukeProjects.Net        NukeStilo 1.0 se basa en PHP-Nuke        Theme Diseñado por NukeMods

© Antonio Lucas Moreno