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); } }
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); } } }