(Java)球以逼真的方式从球拍上弹起

(Java)球以逼真的方式从球拍上弹起,java,bounce,Java,Bounce,所以我想做一个简单的游戏,我需要球从桨上弹起。现在我让球在窗户周围弹跳,但是它穿过了球拍,我很难让它以一种真实的方式从球拍上弹起。 这是我的代码,使球从墙上反弹,它工作得非常完美: //advance the ball ball.advance(); //check if ball should bounce off canvas sides if(ball.getCenterX()+ ball.getRadius() &g

所以我想做一个简单的游戏,我需要球从桨上弹起。现在我让球在窗户周围弹跳,但是它穿过了球拍,我很难让它以一种真实的方式从球拍上弹起。 这是我的代码,使球从墙上反弹,它工作得非常完美:

//advance the ball
            ball.advance();
            //check if ball should bounce off canvas sides
            if(ball.getCenterX()+ ball.getRadius() > canvas.getWidth()) ball.setDirectionX(LEFT);
            if(ball.getCenterX() - ball.getRadius() <0) ball.setDirectionX(RIGHT);

            if(ball.getCenterY()+ ball.getRadius() > canvas.getHeight()) ball.setDirectionY(UPWARDS);
            if(ball.getCenterY() - ball.getRadius() < 0) ball.setDirectionY(DOWNWARDS);
//推进球
球。前进();
//检查球是否会从画布侧面反弹
if(ball.getCenterX()+ball.getRadius()>canvas.getWidth())ball.setDirectionX(左);
if(ball.getCenterX()-ball.getRadius()canvas.getHeight())ball.setDirectionY(向上);
如果(ball.getCenterY()-ball.getRadius()<0)ball.setDirectionY(向下);
问题是,我不确定是否应该修改这些if语句或添加更多,也不确定如何使球正确地从桨上弹起。我尝试添加了几个if语句,得到的最好结果是:我添加的语句是:

if(ball.getCenterY()+ball.getRadius()>blade.getoplefty())ball.setDirectionY(向上);
if(ball.getCenterY()+ball.getRadius()


感谢您提供的任何帮助:)

我相信当X和Y坐标到达球拍时,您需要球反弹

现在,您只是在使用
ball.getCenterY()+ball.getRadius()>拨片.getTopLeftY()
,因此,球是否在
X
轴上靠近拨片并不重要

试试这样的东西

(您可能需要调整
,具体取决于从左向右移动时
X
的值是增大还是减小)

boolean bounceInY=ball.getCenterY()+ball.getRadius()>blade.getTopLeftY();
boolean bounceInX=(ball.getCenterX()+ball.getRadius()>blade.getopleftx())和&(ball.getCenterX()+ball.getRadius()
请考虑提供一个演示您的问题的示例。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将导致更少的混乱和更好的响应我认为我有太多的代码来制作一个简短的可运行示例/我真的不知道怎么做,因为我使用了几个类。我可以张贴具体的部分,如果它可以帮助你帮助我。问题是我不知道如何设置if语句,这样球就会从球拍上弹起,如果没有击中球拍,球就会上升或撞到底部。就我发布的第一段代码而言,它看起来是这样的:球在窗口周围反弹,但正好穿过挡板,我试图找出热的地方让它反弹。添加此代码时,它似乎没有任何作用(我也弄糟了<和>)。仍然是通过palle:然而,我尝试添加以下行:if(ball.getCenterY()+ball.getRadius()>palle.getTopLeftY()&&ball.getCenterY()+ball.getRadius()boolean bounceInY = ball.getCenterY()+ ball.getRadius() > paddle.getTopLeftY(); boolean bounceInX = (ball.getCenterX()+ ball.getRadius() > paddle.getTopLeftX()) && (ball.getCenterX()+ ball.getRadius() < paddle.getTopLeftX() + paddle.getWidth()); if (bounceInY && bounceInX) ball.setDirectionY(UPWARDS);