Пример #1
0
        /// <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
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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);
        }