Java基本碰撞逻辑与形状

时间:2013-10-10 03:24:34

标签: java lwjgl collision slick2d slick

我有一个包含形状(矩形)的数组,然后是另一个形状,当它与数组中的形状碰撞时,我希望它不能通过,所以形状的数组基本上是一个墙的数组形状不能通过。以下是我目前正在尝试的方法(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或解决方案我将非常感激。谢谢。

1 个答案:

答案 0 :(得分:0)

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

所以你模拟你的动作,计算相交,如果它是真的,你就不要跟你的角色一起移动。