Java Pong碰撞检测

时间:2017-04-07 03:04:57

标签: java collision-detection pong

您好我正在尝试用java进行乒乓球游戏,除碰撞部分外,一切都很好。我首先使用Bounds类和intersects方法来解决这个碰撞问题,但是这个方法只适用于我绘制的图片上显示的碰撞情况。

error case

所以我自己编写了新的代码,而不是使用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}}

有人可以帮帮我吗。

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