Java applet中的碰撞检测错误

时间:2014-09-15 20:12:11

标签: java applet collision-detection java-2d

在我的迷宫游戏小程序中,我有一个小小的错误。碰撞检测有效,但有时我的角色可以进入墙壁。更准确地说,它可以检测到碰撞并将角色移动到墙上。它发生得非常罕见,但仍然很烦人。如果我一直交替按下箭头键(例如在角落里向下和向右),就会发生这种情况。如果重要,线程会休眠20毫秒,并且磁贴是20px * 20px。

我认为这个错误就在这里。 Rect是20 * 20px的字符,bigRect是60 * 60px,提前检查碰撞,r在墙砖周围也是20 * 20px。

public void checkCollision() {

    if (r.intersects(Hero.getBigRect()) && Hero.getRect().intersects(r)) {
        if (hero.isMovingUp() == true) {
            hero.stopUp();
            hero.setHeroY(tileY + 20);
        }
        if (hero.isMovingDown() == true) {
            hero.stopDown();
            hero.setHeroY(tileY - 20);
        }
        if (hero.isMovingLeft() == true) {
            hero.stopLeft();
            hero.setHeroX(tileX + 20);
        }
        if (hero.isMovingRight() == true) {
            hero.stopRight();
            hero.setHeroX(tileX - 20);
        }
    }
}

0 个答案:

没有答案