所以我想做一个简单的比赛,我需要球从球拍上反弹 . 现在我让球在窗户周围弹跳很好,但是它穿过桨,我很难以一种逼真的方式从桨上反弹 . 这是我的代码,使球从墙壁反弹,它完美地工作:
//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语句或添加更多,我不知道如何让球正确地从球拍中弹出 . 我尝试添加几个if语句,我得到的最好的是:GIF of game我添加的语句是:
if(ball.getCenterY()+ ball.getRadius() > paddle.getTopLeftY()) ball.setDirectionY(UPWARDS); if(ball.getCenterY()+ ball.getRadius() < paddle.getTopLeftX()) ball.setDirectionY(DOWNWARDS);
感谢您提供的任何帮助:)
1 回答
我相信当 both X and Y 坐标到达球拍时你需要球反弹 .
现在,你只是使用
ball.getCenterY()+ ball.getRadius() > paddle.getTopLeftY()
,所以如果球在X
轴的桨位附近并不重要 .尝试这样的事情 .
(您可能需要调整
<
和>
,具体取决于X
的值从左向右移动时是增加还是减少)