예제 #1
0
        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);
        }
예제 #2
0
        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);
        }