突围游戏:球/桨碰撞和运动的麻烦

时间:2017-04-18 14:56:11

标签: c# if-statement methods monogame breakout

我的方法有问题,我的球在突破游戏中运动以及球和桨之间的碰撞。 我也有一个错误,当球击中桨的左侧或右侧时。这个错误就是这样,球投掷了桨,之后速度变得更快。

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

    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;
        }

0 个答案:

没有答案
相关问题