public override void Update(GameTime gameTime) { DelayCount = DelayCount + gameTime.ElapsedGameTime.Milliseconds; Delay = (TotalEnemiesSpawned * 200) + 1000; if (Delay < DelayCount) { DelayCount = 0; TotalEnemiesSpawned = TotalEnemiesSpawned + 1; float scale = Math.Max(TotalEnemiesSpawned / 10f, 0.3f); int armor = Math.Max((int)Math.Round(10 * scale), 10); int hp = (int)Convert.ToDouble(100 * scale); td_Enemy tempEnemy = new td_Enemy(this.Game, this.spriteBatch, scale, this.level, armor, hp); Game.Components.Add(tempEnemy); EnemiesAlive.Add(tempEnemy); } //EnemiesAlive = EnemiesAlive.Where(x => x.IsDead != true).ToList(); base.Update(gameTime); }
private void Explode(td_Enemy enemy) { // base damage = this.Damage // enemy armor = enemy.Armor - this.ArmorPierce // final damage = base damage - enemy armor enemy.HP = enemy.HP - (this.Damage - (enemy.Armor - this.ArmorPierce)); }
private Vector2 FindAngle(td_Enemy target, TimeSpan elapsedTime) { Vector2 enemy = target.Position; Vector2 direction = enemy - this.Position; direction.Normalize(); direction = direction * 500; return direction; }
public override void Update(GameTime gameTime) { Target = FindTarget(); if (Target != null) { Angle = FindAngle(Target, gameTime.ElapsedGameTime); FireCooldown = FireCooldown + FireCooldownRate; if (FireRate < FireCooldown) { FireCooldown = 0; Fire(Angle); } } }