我的方法有问题,我的球在突围比赛中的运动以及球和桨之间的碰撞。我也有一个错误,当球击中桨的左侧或右侧时。虫子这样做了,所以球扔了桨,然后速度变得更快了。
所以我在问你关于球运动的另一种解决方案,所以它更灵活,很像真正的突破游戏:)
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;
}