2016-11-24 129 views
0

我必須提交一個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

我認爲這是因爲球的圓形,圓的x位置從中心開始,而矩形或方形的x位置開始。 –

回答

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

現在可以通過減去並向邊界添加值來調整碰撞。