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