垂直检测碰撞

时间:2014-05-28 20:16:35

标签: java collision-detection

我正在处理一个项目,我想要检测两个绘制对象的碰撞。

当物体水平伸展时,这种方法很好,但是当它们垂直移动时,它似乎无法正常工作。

我使用的代码是:

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)处检测到我的另一个矩形。

关于这可能是什么问题的任何想法?

0 个答案:

没有答案