/// <summary> /// Se llama cuando termina la ejecución del ejemplo. /// Hacer Dispose() de todos los objetos creados. /// Es muy importante liberar los recursos, sobretodo los gráficos ya que quedan bloqueados en el device de video. /// </summary> public override void Dispose() { escenario.DisposeEscenario(); //personaje.DisposePersonaje(); monster.DisposeMonster(); }
private void InteraccionMonster() { if (!personaje.tieneLuz && !personaje.estoyEscondido && personaje.tiempoSinLuz > GameModel.TiempoSinAdvertencia) { this.renderizado = monsterBlur; if (personaje.tiempoSinLuz == GameModel.TiempoDeAdvertencia) { var posicion = personaje.puntoDemira(personaje.anguloAbsolutoEnY, personaje.anguloAbsolutoEnX); var nuevaPosicion = new TGCVector3(posicion.X, -350, posicion.Z); var delta = new TGCVector3(1000, 0, 1000); if (nuevaPosicion.X > 0) { delta = new TGCVector3(-1000, 0, 1000); } if (nuevaPosicion.Z > 0) { delta = new TGCVector3(delta.X, 0, -1000); } nuevaPosicion += delta; monster.InstanciarMonster(personaje, nuevaPosicion, monstruoActual); //escenario.tgcScene.Meshes.Add(monster.ghost); //monster.DisposeMonster(); monster.reproducirSonidoRandom(); estatica.escucharSonidoActual(true); personaje.viAlMonster = true; } if (personaje.tiempoSinLuz == GameModel.TiempoDeGameOver) { perdi = true; tiempoDeRotacion = 0; monster.DisposeMonster(); //El monster aparece detrás del personaje var anguloDeRotacion = FastMath.PI; var posicion = personaje.puntoDemira(personaje.anguloAbsolutoEnY + anguloDeRotacion, personaje.anguloAbsolutoEnX); var nuevaPosicion = new TGCVector3(posicion.X + 300, -350, posicion.Z + 300); monster.InstanciarMonster(personaje, nuevaPosicion, monstruoActual); //escenario.tgcScene.Meshes.Add(unBicho.ghost); personaje.LockMouse = false; //escenario.tgcScene.Meshes.Add(monster.ghost); var newTarget = new TGCVector3(nuevaPosicion.X, nuevaPosicion.Y + 350, nuevaPosicion.Z); personaje.SetCamera(personaje.eye, newTarget); monster.ReproducirSonidoGameOver(); //personaje.GameOver(this); } if (tiempoDeRotacion > 6 && personaje.tiempoSinLuz > GameModel.TiempoDeGameOver) { personaje.GameOver(this); } tiempoDeRotacion += ElapsedTime; } else { renderizado = this.sombras; } }