public override void Update(GameTime gameTime, Rectangle clientBounds) { position += speed; Vector2 player = spriteManager.GetPlayerPosition(); if (speed.X == 0) { if (player.X < position.X) { position.X -= Math.Abs(speed.Y); } else if (player.X > position.X) { position.X += Math.Abs(speed.Y); } } if (speed.Y == 0) { if (player.Y < position.Y) { position.Y -= Math.Abs(speed.X); } else if (player.X > position.X) { position.Y += Math.Abs(speed.X); } } base.Update(gameTime, clientBounds); }
public override void Update(GameTime gameTime, Rectangle clientBounds) { position += speed; Vector2 player = spriteManager.GetPlayerPosition(); if (evade) { if (player.X < position.X) { position.X += Math.Abs(speed.Y); } else if (player.X > position.X) { position.X -= Math.Abs(speed.Y); } if (player.Y < position.Y) { position.Y += Math.Abs(speed.X); } else if (player.X > position.X) { position.Y -= Math.Abs(speed.X); } } else { if (Vector2.Distance(position, player) < evasionRange) { speed *= -evasionSpeedModifier; evade = true; } } base.Update(gameTime, clientBounds); }