2017-05-24 70 views
-2

我想讓一個球從一個方塊上彈開,但我無法檢測到碰撞並且球彈跳得很好。我嘗試製作兩個矩形並使用相交,但是這並不工作,我不知道爲什麼。我應該手動編寫碰撞檢測嗎?如果是這樣,怎麼樣?或者由於我的項目中存在其他問題,矩形方法不起作用。這是我目前的碰撞檢測。球與方塊之間的碰撞

public boolean collidedWith(Ball ball){ 
      int ballX = ball.getXPosition(); 
      int ballY = ball.getYPosition(); 
      int ballRadius = ball.getRadius(); 
      int squareX = this.getXPosition(); 
      int squareY = this.getYPosition(); 

      Rectangle me = new Rectangle(squareX, squareY, size, size); 
      Rectangle other = new Rectangle(ballX, ballY, ballRadius,ballRadius); 

     if(me.intersects(other)|| other.intersects(me)) 
     { 

      return true; 
     } 
     else 
      return false; 

    } 
} 
+1

'intersects()'做了什麼?如果'me'與'other'相交不會'other'總是與'me'相交?什麼不行? 「球」能真的被認爲是「矩形」嗎? – doelleri

+0

「不起作用」並不能告訴我們您遇到的問題。觀察到的行爲是什麼,它與你想要的行爲有什麼不同? –

+0

球擊中廣場,並通過它而不是反彈(我有代碼,如果檢測到碰撞反轉方向) –

回答

0

我覺得很難理解你的代碼。你不太好。 但爲了發現碰撞 - 你檢查球是否碰到了方格的邊界。

if (Math.abs(ballX + ballVelocityX) + ballRadius > SquareX) 
...; 
    if (Math.abs(ballY + ballVelocityY) + ballRadius > SquareY) 
...; 

數學ABS是絕對值。

+0

如果這些是真的這是否意味着有碰撞? –