Пример #1
0
        /// <summary>
        /// Determines if the obj passed is hitting the borders of the game world screen
        /// and re-sets the position of the obj and its bounding box.
        /// </summary>
        /// <param name="graphics"></param>
        /// <param name="obj"></param>
        public static void Check_Border_colision(GraphicsDeviceManager graphics , Sprite obj)
        {
            float MaxX = graphics.GraphicsDevice.Viewport.Width - obj.get_Texture().Width * obj.get_Scale().X;
            float MinX = 0;
            float MaxY = graphics.GraphicsDevice.Viewport.Height - obj.get_Texture().Height * obj.get_Scale().Y;
            float MinY = 0;

            //Check for bounce
            if (obj.Position.X > MaxX)          // Right border check
            {
                obj.save_Position();

                obj.Direction.X *= -1;
                obj.Position.X = MaxX; // back up  to meet colision surface
                obj.set_box(); // allow boundingbox to follow sprite

                if (obj.Type == "Ball") // Only produce sound if the obj is a Ball
                  Breakout.theSoundBank.PlayCue("BorderHit");

            }

            else if (obj.Position.X < MinX)     // Left border check
            {
                obj.save_Position();

                obj.Direction.X *= -1;
                obj.Position.X = MinX;
                obj.set_box();
                if (obj.Type == "Ball") // Only produce sound if the obj is a Ball
                 Breakout.theSoundBank.PlayCue("BorderHit");
            }

            if (obj.Position.Y > MaxY)          // Bottom border check
            {
                obj.save_Position();

                obj.Direction.Y *= -1;
                obj.Position.Y = MaxY;
                obj.set_box();
                if (obj.Type == "Ball") // Only produce sound if the obj is a Ball
                   Breakout.theSoundBank.PlayCue("BorderHit");

            }

            else if (obj.Position.Y < MinY)     // Top border check
            {
                obj.save_Position();

                obj.Direction.Y *= -1;
                obj.Position.Y = MinY;
                obj.set_box();
                if (obj.Type == "Ball") // Only produce sound if the obj is a Ball
                   Breakout.theSoundBank.PlayCue("BorderHit");
            }
        }