Java 冲突逻辑错误
我正试着做一个乒乓球游戏,我被困在了碰撞检测上。问题来自下面的方法。我搞不懂我的逻辑错误。注意:player1和Circle都是矩形的对象,我正在使用它们来使它们彼此交互。 多谢各位Java 冲突逻辑错误,java,swing,jframe,Java,Swing,Jframe,我正试着做一个乒乓球游戏,我被困在了碰撞检测上。问题来自下面的方法。我搞不懂我的逻辑错误。注意:player1和Circle都是矩形的对象,我正在使用它们来使它们彼此交互。 多谢各位 public void moveBall(){ ball.x += speed; //checks if the ball intersects with the paddle Player 1 if (ball.intersects(player2) && ball.g
public void moveBall(){
ball.x += speed;
//checks if the ball intersects with the paddle Player 1
if (ball.intersects(player2) && ball.getY() >= player2.getY() && ball.getY() <= player2.getY() + 70){
speed *= (-1);
}
}
public void moveBall(){
球.x+=速度;
//检查球是否与划桨运动员1相交
if(ball.intersects(player2)&&ball.getY()>=player2.getY()&&ball.getY()你的问题可能是,一旦球碰到球员,速度就乘以-1,然后球移动,但是球移动得不够远,因此碰撞可能会再次记录,导致速度再次乘以-1。要解决这个问题,只需在更改“速度”的值后移动球即可
解决方案:
public void moveBall(){
ball.x += speed;
//checks if the ball intersects with the paddle Player 1
if (ball.intersects(player2) ){
speed *= (-1);
ball.x += 3*speed;
}
}
另外,您不需要线ball.getY()>=player2.getY()&&ball.getY(),您的与()
method do?我猜这是一个复制/粘贴错误,但是你的评论说你在检查玩家1的交叉点,代码看起来像是在检查玩家2。@azurefrog看来,ball
可能是一个长方形,在这种情况下,如果没有其他代码/解释的话,就很难判断在旁注中,不要做speed*= (-1);
。改用speed=-speed;
。@phflack它可能是,但我宁愿让OP包含更多信息,而不是花时间猜测。我尝试了你上面所说的,但仍然不起作用。出于某种原因,球只会在击中相同的X轴而不是Y轴时发生偏转。只是更改了一些变量名称,发现了我的问题m、 谢谢!