所以我正在研究碰撞检测代码,我所做的是当用户矩形与他们不能移动的矩形重叠时,我阻止它们移动。因此,如果我向右移动并且撞到墙,我将无法向前移动。这行得通。但是,如果在我撞到那堵墙之后,我想从那个点向下或向上移动,我就会卡住。
这就是我检查用户是否有冲突的方式
private void checkCollision() {
for (int x = 0; x < amount; x++) {
if (collsionRect[x].overlaps(user)) {
Gdx.app.log(ChromeGame.LOG, "Overlap");
xD = 0;
yD = 0;
}
}
}
这就是我移动用户的方式
private void moveUser() {
// camera.translate(xD, yD);
player.translate(xD, yD);
camera.position.set(player.getX(), player.getY(), 0);
// Gdx.app.log(ChromeGame.LOG, player.getX() + "," + player.getY());
user = new Rectangle(player.getX(), player.getY(), player.getWidth(),
player.getHeight());
checkCollision();
}
在我的渲染方法中,我一直调用 move userMove 方法,直到我松开键盘,将 xD,yD 变为零