Пример #1
0
        public void Actualizar(GameTime gameTime)
        {
            if (_tilesDeTerreno.Any())
            {
                float posMaxX = _tilesDeTerreno.Max(t => t.PosicionX);
                if (posMaxX < 0)
                {
                    GenerarTile(posMaxX);
                }
            }

            List <TileDeTerreno> tilesParaRemover = new List <TileDeTerreno>();

            foreach (TileDeTerreno tile in _tilesDeTerreno)
            {
                tile.PosicionX -= _trex.Velocidad * (float)gameTime.ElapsedGameTime.TotalSeconds;

                if (tile.PosicionX < -LARGO_SPRITE)
                {
                    _managerDeEntidades.Remover(tile);
                    tilesParaRemover.Add(tile);
                }
            }

            foreach (TileDeTerreno item in tilesParaRemover)
            {
                _tilesDeTerreno.Remove(item);
            }
        }
Пример #2
0
        public void Actualizar(GameTime gameTime)
        {
            if (!estaActivo)
            {
                return;
            }

            if (permitirObstaculos && (_ultimoPuntajeMostrado <= 0 || (_puntajes.Puntaje - _ultimoPuntajeMostrado >= _distanciaActualObjetivo)))
            {
                _distanciaActualObjetivo  = _random.NextDouble() * (DISTANCIA_MAXIMA_ENTRE_OBSTACULOS - DISTANCIA_MINIMA_ENTRE_OBSTACULOS) + DISTANCIA_MINIMA_ENTRE_OBSTACULOS;
                _distanciaActualObjetivo += (_trex.Velocidad - Trex.VELOCIDAD_TREX_INICIAL) / (Trex.VELOCIDAD_TREX_MAXIMA - Trex.VELOCIDAD_TREX_INICIAL) * TOLERANCIA;
                _ultimoPuntajeMostrado    = _puntajes.Puntaje;

                GenerarObstaculoAleatroio();
            }

            foreach (Obstaculo _obstaculo in _managerDeEntidades.ObtenerEntidadesDelTipo <Obstaculo>())
            {
                if (_obstaculo.Posicion.X < -200)
                {
                    _managerDeEntidades.Remover(_obstaculo);
                }
            }
        }