玩家在跳跃时穿过墙壁(JAVA)

时间:2017-06-11 01:34:10

标签: java

我正在尝试制作一个驴子游戏。 目前,我有一个名为jump的布尔值,当按下空格键时,它会告诉游戏玩家是否跳跃。

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_SPACE){
        StartJump();
    }
}

StartJump:通过改变速度使精灵开始跳跃。它还将跳转布尔值更改为true。

public void StartJump() {
    if (onground) {
        velocityY = -4;
        onground = false;
        jump = true;
    }
}

的keyReleased:

public void keyReleased(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_SPACE){
        EndJump();
    }
}

EndJump:将跳转设置为false

public void EndJump() {
    if(velocityY < -6.0)
       velocityY = -6;
    jump = false;
}

按住空格键时会出现问题,跳转设置为true。 然后导致马里奥Y位置的forloop不起作用,他跌倒在地板上。

循环:砖块只包含矩形,供马里奥站立

for(int i = 0; i < bricks.size(); i++) {
        if(marHitBox.intersects(bricks.get(i)) && !mario.getClimb() && !mario.getJump() && marHitBox.intersects(jump.get(i))) {
            mario.setMarY((int)bricks.get(i).getY()-40);
            mario.setVeloY(0f);
            mario.setOnGround(true);
        }    
    }

导致问题的是!mario.getJump()。有没有办法看看空格键是否被保持超过x毫秒才能使jump = false?

2 个答案:

答案 0 :(得分:0)

尝试测量按下和释放空格键之间的经过时间,它将满足您的需要。

答案 1 :(得分:0)

我认为只是一张支票会让它消失

public void StartJump(){

    if (!jump && onground){
        velocityY = -4;
        onground = false;
        jump = true;
    }
}