我正在处理一个项目,我想要检测两个绘制对象的碰撞。
当物体水平伸展时,这种方法很好,但是当它们垂直移动时,它似乎无法正常工作。
我使用的代码是:
p = playerBox
t = targetBox
if ((t.x>=p.x && t.x<=p.x+p.w) || (t.x+t.w>=p.x && t.x+t.w<=p.x+p.w)) {
if ((t.y>=p.y && t.y<=p.y+p.h) || (t.y+t.h>=p.y && t.y+t.h<=p.y+p.h) {
System.out.println("Player p collided with target t!");
}
}
我画的盒子看起来像这样:
g.fillRect(100, 200, 20, 100);
我写的是:
if ((100 >= X && 100 <= X + 20) || (100 + 20 >= X && 100 + 20 <= X + 20)) {
if ((200 >= Y && 200 <= Y + 20) || (200 + 100 >= Y && 200 + 100 <= Y + 20)) {
lblGameOver.setText("Game Over");//första muren lodrätt
btnUp.setEnabled(false);
btnDown.setEnabled(false);
btnRight.setEnabled(false);
btnLeft.setEnabled(false);
}
}
似乎它只在坐标(100,300)处检测到我的另一个矩形。
关于这可能是什么问题的任何想法?