/// <summary> /// Se llama una sola vez, al principio cuando se ejecuta el ejemplo. /// Escribir aquí todo el código de inicialización: cargar modelos, texturas, estructuras de optimización, todo /// procesamiento que podemos pre calcular para nuestro juego. /// Borrar el codigo ejemplo no utilizado. /// </summary> public override void Init() { //Device de DirectX para crear primitivas. var d3dDevice = D3DDevice.Instance.Device; escenario.InstanciarEstructuras(); escenario.InstanciarHeightmap(); escenario.InstanciarSkyBox(); monster.InstanciarMonster(); CrearObjetosEnEscenario(); /* * var cameraPosition = new TGCVector3(-2500, 0, -15000); * var lookAt = new TGCVector3(0, 0, 0); * Camara.SetCamera(cameraPosition, lookAt); */ //ESTA ORIGINALMENTE FUNCIONA // MiCamara camaraInterna = new MiCamara(personaje.PosicionMesh(), 220, 300); //Camara = camaraInterna; //ESTE VA QUERIENDO Camara = personaje; //Camara.SetCamera(personaje.PosicionMesh(), new TGCVector3(0, 0, 0)); //Internamente el framework construye la matriz de view con estos dos vectores. //Luego en nuestro juego tendremos que crear una cámara que cambie la matriz de view con variables como movimientos o animaciones de escenas }
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; } }
public override void Init() { var d3dDevice = D3DDevice.Instance.Device; deviceMusica = DirectSound.DsDevice; this.FixedTickEnable = false; GameModel.instancia = this; musicaMenu = new Sonido("SonidoPruebaTGC(Mono).wav", true); musicaFondoOutdoor = new Sonido("nocturno, continuo.wav", -3000, true); estatica = new Sonido("Radio Static-SoundBible.com-629277574.wav", -2500, true); agarrarPagina = new Sonido("Page_Turn-Mark_DiAngelo-1304638748.wav", -300, false); humanHeartbeat = new Sonido("human-heartbeat-daniel_simon.wav", -1000, false); respiracion = new Sonido("Breathing Vent-SoundBible.com-18702822.wav", -600, false); //CreateFullScreenQuad(); CreateRenderTarget(); personaje = new Personaje(); menu.instanciarMenu(); nota.instanciarNotas(0); vidaUtilVela.instanciarVelas(0); velita.instanciarVelita(); vidaUtilLinterna.instanciarLinternas(0); linternita.instanciarLinternita(); InstanciarSonidosRandoms(); InstanciarSonidosOutDoorRandoms(); InstanciasSonidosInDoorRandoms(); escenario.InstanciarEstructuras(); monster = new Monster(); monster.InstanciarMonster(monstruoActual); CrearObjetosEnEscenario(); //iluminables.Add(monster.ghost); //iluminables.AddRange(escenario.tgcScene.Meshes); TgcMesh mesh1 = escenario.tgcScene.Meshes.Find(mesh => mesh.Name.Equals("linterna_1")); TgcMesh mesh2 = escenario.tgcScene.Meshes.Find(mesh => mesh.Name.Equals("linterna_2")); var linterna = new Linterna(mesh1, mesh2, this); objetosInteractuables.Add(linterna); Camera = personaje; quads = new List <FullscreenQuad>(); //ShadersDir effectPosProcesado = TGCShaders.Instance.LoadEffect(ShadersDir + "PostProcesado.fx"); effectPosProcesado.Technique = "PostProcessDefault"; var unQuad = new FullscreenQuad(effectPosProcesado); unQuad.loEstoyUsando = true; this.quads.Add(unQuad); sombras = new Sombras(this); sombras.InstanciarSombras(); this.renderizado = sombras; monsterBlur = new MonsterBlur(escenario, this); monsterBlur.instanciarMonsterBlur(ShadersDir, monster, MediaDir); }