我试图让一个球从一个正方形反弹,但我无法检测到碰撞并使球正常反弹。我尝试制作两个矩形并使用交叉,但这不起作用我不知道为什么。我应该手动编写碰撞检测吗?如果是这样,怎么样?或者由于我的项目中的其他问题,矩形方法无法正常工作。这是我目前的碰撞检测。
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;
}
}
答案 0 :(得分:0)
我发现很难理解你的代码。你不是很好。 但为了发现碰撞 - 你检查球是否击中了广场的边界。
if (Math.abs(ballX + ballVelocityX) + ballRadius > SquareX)
...;
if (Math.abs(ballY + ballVelocityY) + ballRadius > SquareY)
...;
数学绝对值是绝对值。