public virtual void Update() { if (mIsKilled) { mDestroyTimer -= Time.deltaTime; if (mDestroyTimer <= 0) //播放完特效后,销毁 { mCanDestroy = true; } return; } mTurret.Update(); }
private void UpdatePlayerTurrets(GameTime gameTime, ContentManager content, int screenWidth, int screenHeight) { if (hasTurretOne) { playerTurretOne.Update(gameTime, screenWidth, screenHeight); if (playerTurretOne.CanAttack) { foreach (Soldier enemyTroop in soldierManager.EnemyTroops) { if ((double)Vector2.Distance(playerTurretOne.Position, enemyTroop.Position) < 400.0 && !playerTurretOne.Arrow.IsActive && (double)enemyTroop.Position.X > (double)playerTurretOne.Position.X) { playerTurretOne.Shoot(enemyTroop.Position, content); } } foreach (RangedSoldier enemyRangedTroop in soldierManager.EnemyRangedTroops) { if ((double)Vector2.Distance(playerTurretOne.Position, enemyRangedTroop.Position) < 400.0 && !playerTurretOne.Arrow.IsActive && (double)enemyRangedTroop.Position.X > (double)playerTurretOne.Position.X) { playerTurretOne.Shoot(enemyRangedTroop.Position, content); } } } foreach (Soldier enemyTroop in soldierManager.EnemyTroops) { if (playerTurretOne.Arrow.Rectangle.Intersects(enemyTroop.Rectangle) && playerTurretOne.Arrow.IsActive) { enemyTroop.Health -= playerTurretOne.Damage; enemyTroop.Hit(); playerTurretOne.Arrow.Kill(); } } foreach (RangedSoldier enemyRangedTroop in soldierManager.EnemyRangedTroops) { if (playerTurretOne.Arrow.Rectangle.Intersects(enemyRangedTroop.Rectangle) && playerTurretOne.Arrow.IsActive) { enemyRangedTroop.Health -= playerTurretOne.Damage; enemyRangedTroop.Hit(); playerTurretOne.Arrow.Kill(); } } } if (!hasTurretTwo) { return; } playerTurretTwo.Update(gameTime, screenWidth, screenHeight); foreach (Soldier enemyTroop in soldierManager.EnemyTroops) { if ((double)Vector2.Distance(playerTurretTwo.Position, enemyTroop.Position) < 275.0 && playerTurretTwo.CanAttack && (!playerTurretTwo.Arrow.IsActive && (double)enemyTroop.Position.X > (double)playerTurretTwo.Position.X)) { playerTurretTwo.Shoot(enemyTroop.Position, content); } } foreach (RangedSoldier enemyRangedTroop in soldierManager.EnemyRangedTroops) { if ((double)Vector2.Distance(playerTurretTwo.Position, enemyRangedTroop.Position) < 275.0 && playerTurretTwo.CanAttack && (!playerTurretTwo.Arrow.IsActive && (double)enemyRangedTroop.Position.X > (double)playerTurretTwo.Position.X)) { playerTurretTwo.Shoot(enemyRangedTroop.Position, content); } } if (playerTurretTwo.Arrow.IsActive) { foreach (Soldier enemyTroop in soldierManager.EnemyTroops) { if (playerTurretTwo.Arrow.Rectangle.Intersects(enemyTroop.Rectangle) && playerTurretTwo.Arrow.IsActive) { enemyTroop.Health -= playerTurretTwo.Damage; enemyTroop.Hit(); playerTurretTwo.Arrow.Kill(); } } foreach (RangedSoldier enemyRangedTroop in soldierManager.EnemyRangedTroops) { if (playerTurretTwo.Arrow.Rectangle.Intersects(enemyRangedTroop.Rectangle) && playerTurretTwo.Arrow.IsActive) { enemyRangedTroop.Health -= playerTurretTwo.Damage; enemyRangedTroop.Hit(); playerTurretTwo.Arrow.Kill(); } } } }