0

我有一个包含形状(矩形)的数组,然后是另一个形状,当它与数组中的一个形状发生碰撞时,我希望它不能通过,所以形状数组基本上是一个形状可以的墙壁数组不通过。这是我目前正在尝试的方式(W键的示例):

private boolean CanMove() { 
    for(Shape wall : mazeWalls) {
        if(character.intersects(wall)) 

            return true;

    }
    return false;
}

if (keyInput.isKeyDown(keyInput.KEY_W)) {
        for(int i = 0; i <= MoveSpeed; i++) {
            char_y--;
              if(CanMove()) {
                char_y++;
                break;
            }
        }
    } 

形状数组非常小,所以我正在检查它 - 现在它会停止但它会卡在墙上并且无法退出/朝任何其他方向前进。它只是卡在墙上。如果有人有更好的方法来做到这一点,我将使用 Slick 和 LWJGL 或解决方案,我将不胜感激。谢谢。

4

1 回答 1

0

如何做到这一点的常用方法是在它发生之前计算向前迈出的一步,然后决定你是否可以移动或不能移动。

所以你模拟你的运动,计算相交,如果它是真的,你就不会随着你的角色移动。

于 2013-10-10T03:28:56.743 回答