2

我正在用 java 开发一个简单的平台游戏,并且在播放器的跳跃时遇到了麻烦。正在发生的事情是,如果我按住空格键,播放器就会继续上升。我需要一些方法让玩家每次按下空格键跳一次。我当前用于跳跃的 KeyListener 设置如下。

public void keyPressed(KeyEvent e) {
    int key = e.getKeyCode();

    if (key == KeyEvent.VK_SPACE)
        Input.jump = true;
}

public void keyReleased(KeyEvent e) {
    int key = e.getKeyCode();

    if (key == KeyEvent.VK_SPACE)
        Input.jump = false;
}

在我的 Player 课程中,我有以下用于切换跳跃

if(Input.jump == true) jump();

任何帮助将非常感激!

4

1 回答 1

1

问题不在于每次按键都会调用该事件 - 问题是Input.jump在您松开按键之前都是如此。

你可以尝试这样的事情:

public void keyPressed(KeyEvent e) {
    int key = e.getKeyCode();
    if (key == KeyEvent.VK_SPACE)
        if(!Input.jump) {
            velocity += jumpVelocity;
        }
        Input.jump = true;
}

public void keyReleased(KeyEvent e) {
    int key = e.getKeyCode();

    if (key == KeyEvent.VK_SPACE)
        Input.jump = false;
}

然后使用速度向上移动你的角色。

或者你可以使用某种布尔值——这真的取决于你的情况。如果您使用的是布尔值,那么您需要类似以下代码:

public void keyPressed(KeyEvent e) {
    int key = e.getKeyCode();
    if (key == KeyEvent.VK_SPACE)

        if(!Input.jump) {
            isJumping = true;
        } else {
            isJumping = false;
        }
        Input.jump = true;
}
于 2013-01-20T22:12:09.083 回答