public void Update(GameTime gameTime, Nave jugador) { float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds; spawnTimer += elapsed; if (spawnTimer >= spawnRate) { do { posX = rand.Next(-100, 1300); } while (posX > 0 && posX < 1200); do { posY = rand.Next(-100, 820); } while (posY > 0 && posY < 720); ListaPower.Add(new PowerUp(rand.Next(-60, 60), rand.Next(-40, 40), new Vector2(posX, posY))); spawnTimer = 0; } for (int i = 0; i < ListaPower.Count; i++)//Update each astroid { UpdatePower(ListaPower[i], elapsed); if (ListaPower[i].boundingBox.Intersects(jugador.recNave)) { ListaPower[i].esVisible = false; jugador.spawnRate = jugador.spawnRate / 2; } if (!ListaPower[i].esVisible) { ListaPower.RemoveAt(i); } } //aumentar el timer en milisegundos timer += (float)gameTime.ElapsedGameTime.TotalMilliseconds; //Funciono!! if (timer > interval) { //mostrar el proximo frame currentFrame++; timer = 0f; } //Si estamos en el ultimo frame, resetear al primero if (currentFrame == 8) { //isVisible = false; currentFrame = 0; } sourceRect = new Rectangle(currentFrame * spriteWidth, 0, spriteWidth, spriteHeight); origen = new Vector2(sourceRect.Width / 2, sourceRect.Height / 2); }
public void Update(GameTime gameTime, Nave jugador) { foreach (Explosion exe in ExplosionList) { exe.Update(gameTime); } float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds; spawnTimer += elapsed; if (spawnTimer >= spawnRate) { do { posX = rand.Next(-100, 1300); } while (posX > 0 && posX < 1200); do { posY = rand.Next(-100, 820); } while (posY > 0 && posY < 720); ListaAster.Add(new Asteroid(rand.Next(-60, 60), rand.Next(-40, 40), new Vector2(posX, posY), rand.Next(30, 200))); spawnTimer = 0; } for (int i = 0; i < ListaAster.Count; i++)//Update each astroid { UpdateAsteroid(ListaAster[i], elapsed); if (ListaAster[i].boundingBox.Intersects(jugador.recNave)) { ListaAster[i].esVisible = false; Murio = true; } for (int j = 0; j < jugador.listaBalas.Count; j++) { if (ListaAster[i].boundingBox.Intersects(jugador.listaBalas[j].boundingBox) && ListaAster[i].Escala >= 1 && jugador.listaBalas[j].esVisible && ListaAster[i].esVisible) { ExplosionList.Add(new Explosion(texturaExplosion, new Vector2(ListaAster[i].Position.X, ListaAster[i].Position.Y), ListaAster[i].Escala)); ListaAster.Add(new Asteroid(rand.Next(-60, 60), rand.Next(-40, 40), new Vector2(ListaAster[i].Position.X + 2, ListaAster[i].Position.Y + 2), (float)rand.Next(30, 100))); ListaAster.Add(new Asteroid(rand.Next(-60, 60), rand.Next(-40, 40), new Vector2(ListaAster[i].Position.X + 2, ListaAster[i].Position.Y + 2), (float)rand.Next(30, 100))); ListaAster.RemoveAt(i); jugador.listaBalas[j].esVisible = false; jugador.sn.explosion.Play(); } if (ListaAster[i].boundingBox.Intersects(jugador.listaBalas[j].boundingBox) && ListaAster[i].Escala < 1 && jugador.listaBalas[j].esVisible && ListaAster[i].esVisible) { ExplosionList.Add(new Explosion(texturaExplosion, new Vector2(ListaAster[i].Position.X, ListaAster[i].Position.Y), ListaAster[i].Escala)); ListaAster[i].esVisible = false; jugador.listaBalas[j].esVisible = false; jugador.sn.explosion.Play(); } } if (!ListaAster[i].esVisible) { ListaAster.RemoveAt(i); } } }