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