2

私はJavaでシンプルなプラットフォーマーに取り組んでいて、プレーヤーのジャンプに問題があります。何が起こっているのかというと、スペースバーを押したままにすると、プレーヤーは上がり続けます。スペースバーを押すたびにプレーヤーを1回ジャンプさせる方法が必要です。ジャンプ用の現在の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 に答える