public static void Update() { bool endReached = false; float tmpOverflowX = 0; float overflowX = 0; for (int i = 0; i < aliens.Length; i++) { if (aliens[i].IsVisible) { if (aliens[i].Update(ref tmpOverflowX)) { endReached = true; overflowX = tmpOverflowX; } } } if (endReached)//at least one alien has reached the end of the screen (or the start!) { for (int i = 0; i < aliens.Length; i++) { //Position.X -= overflowX; //deltaX -= overflowX; aliens[i].Translate(new Vector2(-overflowX, 50)); aliens[i].Velocity.X = -aliens[i].Velocity.X; } } Player player = Game.GetPlayer(); for (int i = 0; i < bulletsAliens.Length; i++) { if (bulletsAliens[i].IsAlive) { bulletsAliens[i].Update(); if (Game.BarriersCollides(bulletsAliens[i].Position, bulletsAliens[i].GetWidth() / 2)) { bulletsAliens[i].IsAlive = false; } //check collision with player if (bulletsAliens[i].Collides(player.GetPosition(), player.GetRay())) { bulletsAliens[i].IsAlive = false; player.OnHit(); } } } }
public void Update() { float deltaX = speed * GfxTools.Win.deltaTime; position.X += deltaX; float maxX = position.X + width / 2; float minX = position.X - width / 2; if (maxX > GfxTools.Win.width - distToSide) { float overflowX = maxX - (GfxTools.Win.width - distToSide); position.X -= overflowX; deltaX -= overflowX; } else if (minX < distToSide) { float overflowX = minX - distToSide; position.X -= overflowX; deltaX -= overflowX; } //rectangles update //baseRect.Translate(deltaX, 0); //cannonRect.Translate(deltaX, 0); spriteobj.Translate(deltaX, 0); for (int i = 0; i < bulletPlayer.Length; i++) { if (bulletPlayer[i].IsAlive) { bulletPlayer[i].Update(); if (Game.BarriersCollides(bulletPlayer[i].Position, bulletPlayer[i].GetWidth())) { bulletPlayer[i].IsAlive = false; } if (EnemyMgr.CollideWithBullet(bulletPlayer[i])) { bulletPlayer[i].IsAlive = false; } } } }