Beispiel #1
0
 /// <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();
 }
Beispiel #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;
            }
        }