2017-05-24 100 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

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