C# 突破游戏:球/桨碰撞和移动的问题

C# 突破游戏:球/桨碰撞和移动的问题,c#,if-statement,methods,monogame,breakout,C#,If Statement,Methods,Monogame,Breakout,我的方法有问题,我的球在突破赛中的移动以及球和桨之间的碰撞。 我也有一个错误,当球击中左侧或右侧的划桨。虫子这样做的话,球就会被抛到桨上,然后速度会变快很多 所以我要求你提供另一个关于球的移动的解决方案,这样它更灵活,更像真正的突破游戏:) 我认为最好先用代码修复我的OOP,然后再发布。。不要发布你的全部代码,这里没有人有时间(可能也没有合适的心情)分析你的全部代码并查找任何错误或代码气味。只发布显示问题的相关部分。 void BallPaddleCollisions() {

我的方法有问题,我的球在突破赛中的移动以及球和桨之间的碰撞。 我也有一个错误,当球击中左侧或右侧的划桨。虫子这样做的话,球就会被抛到桨上,然后速度会变快很多

所以我要求你提供另一个关于球的移动的解决方案,这样它更灵活,更像真正的突破游戏:)


我认为最好先用代码修复我的OOP,然后再发布。。不要发布你的全部代码,这里没有人有时间(可能也没有合适的心情)分析你的全部代码并查找任何错误或代码气味。只发布显示问题的相关部分。
    void BallPaddleCollisions()
    {
        //IF BALL HITS LEFT/RIGHT SIDE
        if (ball_rect.X > Window.ClientBounds.Width - ball_texture.Width || ball_rect.X < 0)
            ball_speed.X *= -1;

        //IF BALL HITS THE ROOF
        if (ball_rect.Y > Window.ClientBounds.Height - ball_texture.Height || ball_rect.Y < 0)
            ball_speed.Y *= -1;

        //IF BALL HITS THE BOTTOM
        if (ball_rect.Y > Window.ClientBounds.Height - ball_texture.Height)
        {
            //NEW VALUES TO BALL AND PADDLE
            ball_rect.X = (Window.ClientBounds.Width - ball_texture.Width) / 2;
            ball_rect.Y = 556;
            paddle_rect.X = (Window.ClientBounds.Width - paddle_texture.Width) / 2;
            paddle_rect.Y = 580;
        }

        //IF PADDLE HITS RIGHT SIDE, STOPS
        if (paddle_rect.X > Window.ClientBounds.Width - paddle_rect.Width)
            paddle_rect.X = (Window.ClientBounds.Width - paddle_rect.Width);

        //IF PADDLE HITS LEFT SIDE, STOPS
        if (paddle_rect.X < 0)
            paddle_rect.X = 0;

        //IF BALL HIT PADDLE
        if (paddle_rect.Intersects(ball_rect))
        {
            ball_speed.Y *= -1;

            //WHEN YOU HOLD LEFT KEY
            if (holdingleft == true)
            {
                ball_speed.X -= 3;
            }
            //WHEN YOU HOLD RIGHT KEY
            else if (holdingright == true)
            {
                ball_speed.X += 3;
            }
            //IF YOU ARE NOT HOLDING ANY KEY AND STANDING STILL WITH PADDLE
            else if (resetballspeed == true)
            {
                ball_speed.X = 1;
            }
        }
    }
        else if (ks.IsKeyDown(Keys.Space))
        {
            Start = true;
        }

        //IF YOU HIT SPACEBAR THIS WILL START
        if (Start == true)
        {
            ball_rect.X += (int)ball_speed.X;
            ball_rect.Y += (int)ball_speed.Y;
        }