/// <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(); } } }
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; } }
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(); } }
/// <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; } } } } }
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(); } } }