1

基本的に、私がやろうとしているのは、LWJGL を使用して、プレーヤーをゲーム内で動かすことです。プレイヤーは現在動いていますが、ボタンを押している間は動き続けません..

public void update(){ while(Keyboard.next()){

        if(Keyboard.getEventKey() == Keyboard.KEY_RIGHT) {
            if(Keyboard.getEventKeyState()){
                System.out.println("KEY DOWN!");
                player.playerMovingRight();
            }
            else{
                System.out.println("KEY RELEASED!");
            }
        }
    }

while(Keyboard.getEventKeyState()) を使用してみましたが、ゲームがクラッシュするだけで、キーを離しても認識されません。

では、キーをすばやく押して移動するのではなく、ボタンを押したままにすると、プレーヤーを動かし続けるにはどうすればよいでしょうか。また、プレーヤーが同時に 2 つのボタンを押している場合、どのように機能させることができますか?

更新されたコード:

public void update(){
    while(Keyboard.next()){

        //If key escape is down we shut the application down
        if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)){
            System.exit(0);
        }

        //If key up was pressed move up
        else if(Keyboard.getEventKey() == Keyboard.KEY_UP) {
            if(Keyboard.getEventKeyState()){
                System.out.println("KEY DOWN!");
                moveUp = true;
            }
            else{
                System.out.println("KEY RELEASED!");
                moveUp = false;
            }
        }
        //If key down was pressed move down
        else if(Keyboard.getEventKey() == Keyboard.KEY_DOWN) {
            if(Keyboard.getEventKeyState()){
                System.out.println("KEY DOWN!");
                moveDown = true;
            }
            else{
                System.out.println("KEY RELEASED!");
                moveDown = false;
            }
        }

        if(moveUp == true){
            player.playerMovingUp();
        }
        if(moveDown == true){
            player.playerMovingDown();
        }
    }

私はまだコードに同じ問題を抱えています.ボタンを押し続けることができず、プレーヤーがまだ動くのを妨げている Keyboard.next() と考え始めています。

4

3 に答える 3

1

while(Keyboard.next())イベントで使用することになっています。

あなたの場合、イベントがトリガーされたときに何かをしたくないだけです。ただし、キーが押されたかどうかを 1 秒間に何度も判断したい場合があります。もしそうなら、あなたは何かをしたいと思っています(例えば、移動)。

したがって、Keyboard.isKeyDown()関数を使用するのが最善の解決策です。ちょっとした例:

if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
    System.out.println("pressing KEY_UP");
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
    System.out.println("pressing KEY_DOWN");
}
if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
    System.out.println("pressing KEY_LEFT");
}
if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
    System.out.println("pressing KEY_RIGHT");
}

また、優れたチュートリアルがここにあります。

于 2014-10-09T15:19:58.643 に答える