我有一个包含形状(矩形)的数组,然后是另一个形状,当它与数组中的形状碰撞时,我希望它不能通过,所以形状的数组基本上是一个墙的数组形状不能通过。以下是我目前正在尝试的方法(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或解决方案我将非常感激。谢谢。
答案 0 :(得分:0)
如何做到这一点的常用方法是在事件发生之前计算一步,然后决定是否可以移动或者你不能。
所以你模拟你的动作,计算相交,如果它是真的,你就不要跟你的角色一起移动。