碰撞检测无法正常工作

时间:2016-11-24 13:22:47

标签: javafx collision-detection

我必须提交一个Breakout克隆,我正在努力解决球和砖的碰撞问题。基本上,碰撞检测起作用,但球会破坏距离视觉对象约10个像素的砖块。我正在检查两个物体的界限,但我想问题是球是一个移动的物体而砖是静态的。

for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        brick = brickArray[i][j];
        if (brick == null)
            continue;
            areBricksLeft = true;
            Bounds brickBounds = brick.getBoundsInParent();
            Bounds ballBounds = ball.getBoundsInParent();

        if (brickBounds.intersects(ballBounds) ) {
            brick.removeBrickAt(i, j, brick, brickArray, brickPane);
            didHitBrick = true;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

感谢提示,我发现了错误。我用这个替换了我的条件:

double ballX = ball.getLayoutX() + ball.getRadius();
double ballY = ball.getLayoutY() + ball.getRadius();

if ((ballX <= brickBounds.getMaxX() - 10 && ballX >= brickBounds.getMinX() -10) && 
   (ballY <= brickBounds.getMaxY() - 10  && ballY >= brickBounds.getMinY() - 10)) {
    brick.removeBrickAt(i, j, brick, brickArray, brickPane);
    didHitBrick = true;
}

现在可以通过减去边界值并将值添加到边界来调整碰撞。

相关问题