您好我正在尝试用java进行乒乓球游戏,除碰撞部分外,一切都很好。我首先使用Bounds类和intersects方法来解决这个碰撞问题,但是这个方法只适用于我绘制的图片上显示的碰撞情况。
所以我自己编写了新的代码,而不是使用Bounds类,我成功地创建了侧面碰撞检测方法,但我又一次很难解决桨叶顶部和底部的碰撞检测问题。
public boolean collideRightUpSide(Ball ball){
if((ball.getLayoutX()+ball.getRadius()>=player.getLayoutX()&&ball.getLayoutX()-ball.getRadius()<=player.getLayoutX()+width)&&(ball.getLayoutY()+ball.getRadius()>=player.getLayoutY()&&ball.getLayoutY()-ball.getRadius()<=player.getLayoutY()+height)){
return true;
}
else{
return false;
}
}
这是我为顶部和底部碰撞检测所做的方法。
{{1}}
有人可以帮帮我吗。
答案 0 :(得分:0)
尝试在一个函数中包含if语句,如下所示:
public boolean collideFunction(Ball ball){
if(ball.getLayoutX()+ball.getRadius()>=player.getLayoutX()&&(ball.getLayoutY()+ball.getRadius()>=player.getLayoutY()&&ball.getLayoutY()-ball.getRadius()<=player.getLayoutY()+height)){
return true;
}
else if((ball.getLayoutX()+ball.getRadius()>=player.getLayoutX()&&ball.getLayoutX()-ball.getRadius()<=player.getLayoutX()+width)&&(ball.getLayoutY()+ball.getRadius()>=player.getLayoutY()&&ball.getLayoutY()-ball.getRadius()<=player.getLayoutY()+height)){
return true;
}
else{
return false;
}
}