예제 #1
0
        /// <param name="dt">Tiempo desde la última ejecución</param>
        public void UpdatePlane(float dt)
        {
            // Control de saltos en casos de bajo rendimiento y pérdida del foco
            if (dt > 0.1f) dt = 0.1f;

            player.Update(dt);

            // Extraigo los ejes del avion de su matriz transformación
            Vector3 plane = player.GetPosition();
            Vector3 z = player.ZAxis();
            Vector3 y = player.YAxis();
            Vector3 x = player.XAxis();

            GuiController.Instance.UserVars.setValue("Posición en X", plane.X);
            GuiController.Instance.UserVars.setValue("Posición en Y", plane.Y);
            GuiController.Instance.UserVars.setValue("Posición en Z", plane.Z);

            Vector3 camera;
            Vector3 target;

            camera = plane + CAM_DELTA.Y * y + CAM_DELTA.Z * z;
            target = plane + CAM_DELTA.Y * y;
            cam.SetCenterTargetUp(camera, target, y, true);
            cam.updateViewMatrix(d3dDevice);

            if (player.GetPosition().Y >= 18000) {
                mostrar_msj_advertencia = true;
                hora_advertencia = DateTime.Now;
                if (player.GetPosition().Y >= 20000) {
                    motor.stop();
                    motor.closeFile();
                    sound = GuiController.Instance.Mp3Player;
                    sound.FileName = GuiController.Instance.AlumnoEjemplosMediaDir +
                    "Jet_Pilot\\Sonido\\Motor_Apagandose.mp3";
                    sound.play(false);
                    reset();
                }
            }
        }
예제 #2
0
        public void renderGlobos(float elapsedTime)
        {
            /*Envía los Globos a renderizar*/

            Vector3 centro_globo;
            Vector3 centro_avion = player.Get_Center();
            Vector3 vector_centros;

            int i = 0;

            foreach (Vector3 pos in objetivos)
            {
                Globo.Position = pos;

                if (pos.Length() != 0)
                {

                    centro_globo = Globo.BoundingBox.calculateBoxCenter();

                    vector_centros = centro_globo - centro_avion;

                    if (vector_centros.Length() <= (player.Get_Radius() + Globo.BoundingBox.calculateBoxRadius())) //Verifico si colisiona el globo con el avión
                    {
                        quitarGlobo(i);
                        Score = Score + 1;
                        motor.stop();
                        motor.closeFile();
                        sound = GuiController.Instance.Mp3Player;
                        sound.FileName = GuiController.Instance.AlumnoEjemplosMediaDir +
                        "Jet_Pilot\\Sonido\\Sonido_Captura1.mp3";
                        sound.play(false);

                        if (Score == cantidad_globos)
                        { //Si completé el nivel debo mostrar msj de felicitaciones
                            hora_trunfo = DateTime.Now;
                            mostrar_msj_triunfo = true;
                            //sound = GuiController.Instance.Mp3Player;
                            sound.closeFile();
                            sound.FileName = GuiController.Instance.AlumnoEjemplosMediaDir +
                            "Jet_Pilot\\Sonido\\Musica_Victoria.mp3";
                            sound.play(false);
                            Score = 0;
                        }

                    }
                    else //No colisiona, entonces lo dibujo
                    {
                        if (BBGlobos)
                        {
                            Globo.BoundingBox.render();
                        }
                        Globo.render();
                    }
                }

                i += 1;
            }
        }
예제 #3
0
 private void updateColision()
 {
     //hago colisionar el avion
     if (colisionador.colisionar(player.getMesh().BoundingBox, centros_terrains_colisionables))
     {
         mostrar_msj_choque = true;
         hora_choque = DateTime.Now;
         motor.stop();
         motor.closeFile();
         sound = GuiController.Instance.Mp3Player;
         sound.FileName = GuiController.Instance.AlumnoEjemplosMediaDir +
         "Jet_Pilot\\Sonido\\Motor_Apagandose.mp3";
         sound.play(false);
         reset();
     }
 }
예제 #4
0
        /// <summary>
        /// Método que se llama cada vez que hay que refrescar la pantalla.
        /// Escribir aquí todo el código referido al renderizado.
        /// Borrar todo lo que no haga falta
        /// </summary>
        /// <param name="elapsedTime">Tiempo en segundos transcurridos desde el último frame</param>
        /// 
        public override void render(float elapsedTime)
        {
            if (juego_pausado)
            {
                renderMenu();
            }
            else
            {
                if (GuiController.Instance.D3dInput.keyDown(Microsoft.DirectX.DirectInput.Key.P))
                {
                    juego_pausado = true;
                    motor.stop();
                    motor.closeFile();
                }
                else
                {
                    renderTerrainAndClouds(elapsedTime);
                    renderPlane(elapsedTime);
                    updateColision();
                    renderSkybox(elapsedTime);

                    if (sound.getStatus() != TgcMp3Player.States.Playing && motor.getStatus() != TgcMp3Player.States.Playing)
                    {
                        sound.closeFile();
                        motor = GuiController.Instance.Mp3Player;
                        motor.FileName = GuiController.Instance.AlumnoEjemplosMediaDir +
                        "Jet_Pilot\\Sonido\\avion_3.mp3";
                        motor.play(true);
                    }

                    if (modo_capturar_globos)
                    {
                        render_score();
                        renderGlobos(elapsedTime);
                    }

                    if (mostrar_msj_choque)
                    {
                        if (DateTime.Now.Subtract(hora_choque).Seconds <= 2)
                        {
                            Msj_Choque.render();
                        }
                        else {
                            mostrar_msj_choque = false;
                        }
                    }

                    if (mostrar_msj_triunfo){
                        if (DateTime.Now.Subtract(hora_trunfo).Seconds <= 2)
                        {
                            Msj_Triunfo.render();
                        }
                        else {
                            mostrar_msj_triunfo = false;
                        }
                    }

                    if (mostrar_msj_advertencia){

                        if (DateTime.Now.Subtract(hora_advertencia).Seconds <= 2)
                        {
                            Msj_Advertencia.render();
                        }
                        else {
                            mostrar_msj_advertencia = false;
                        }
                    }
                }
            }
        }
예제 #5
0
        private void renderMenu()
        {
            GuiController.Instance.Drawer2D.beginDrawSprite();
            Imagen_Menu.render();
            GuiController.Instance.Drawer2D.endDrawSprite();
            Texto_Start.render();
            Texto_Titulo.render();

            if (sound.getStatus() != TgcMp3Player.States.Playing)
            {
                sound = GuiController.Instance.Mp3Player;
                sound.FileName = GuiController.Instance.AlumnoEjemplosMediaDir +
                "Jet_Pilot\\Sonido\\102_prologue.mp3";
                sound.play(true);
            }

            if (GuiController.Instance.D3dInput.keyDown(Microsoft.DirectX.DirectInput.Key.Return))
            {
                juego_pausado = false;
                sound.stop();
                sound.closeFile();
                motor = GuiController.Instance.Mp3Player;
                motor.FileName = GuiController.Instance.AlumnoEjemplosMediaDir +
                "Jet_Pilot\\Sonido\\avion_3.mp3";
                motor.play(true);
                juego_iniciado = true;
            }

            if (juego_iniciado)
            {
                Texto_Start.Text = "Presione enter para reanudar";
                if (modo_capturar_globos)
                {
                    render_score();
                }
            }
        }