按下多个键进行游戏碰撞检测

时间:2015-03-24 15:40:30

标签: java

我试图制作经典的炸弹人游戏,所以我有角色形象和瓷砖(块)。我用方法collision检测碰撞,当字符与某个图块(块)相交时,它返回true。

角色运动如下:

public void moveUp() {
    yMove = -SPEED;
}// and other similar to other directions

public void update() {// this is called in cyclus
    y += yMove;
    x += xMove;
    if (collision() == true) {
            if (isMovingUp()) {
                y -= yMove;
            }
            if (isMovingDown()) {
                y += -yMove;
            }

            if (isMovingLeft()) {
                x -= xMove;
            }
            if (isMovingRight()) {
                x += -xMove;
            }
    }
}

如果我只使用1个箭头,这是有效的。如果我按下2个箭头(例如,我按下向右,我可以向下但是我不能向右移动,角色停留在当前位置 - >它应该向下移动),如果我按下3个箭头(左,右,下)我甚至可以穿过墙壁..

有什么想法吗?感谢。

编辑:碰撞方法:

 public boolean collision() {
        playerRect = new Rectangle(x, y, PLAYER_WIDTH, PLAYER_HEIGHT);

        for(int i = 0; i < map.length; i++) {
            for(int j = 0; j < map[0].length; j++) {
                if(map[j][i].getType() >= 1) {
                    Rectangle tileRect = new Rectangle(i*32, j*32, 32, 32);
                    rect.add(tileRect);
                }
            }
        }  
        for(Rectangle collision : rect) {
            if(collision.intersects(playerRect)) { 
                return true;
            }
        }

        return false;
    }

0 个答案:

没有答案