2016-11-16 5 views
0

こんにちは、矢印キーを使って画面の周りをクワッドに移動するという簡単な作業があります。私はLWJGLを使ってこの非常にシンプルな "ゲーム"を作っています。しかし、私は問題に出会った。キーボード入力は機能しますが、大きな問題はありますが、矢印キーを押し続けることはできません。キーをクリックしてすぐに離すと移動します。押さえつけることは何もしない。ここでLWJGL 2.9キーボード入力を使って画面周りのクワッドを動かす

は、私はただのゲームで時間のために使用私の時計クラスです:

public class Clock { 

    private static long lastFrame; 

    public static long getTime(){ 
     return (Sys.getTime() * 1000)/Sys.getTimerResolution(); 
    } 

    public static int getDelta(){ 
     long currentTime = getTime(); 
     int delta = (int) (currentTime - lastFrame); 
     lastFrame = getTime(); 
     return delta; 
    } 

    public static void initLastFrame(){ 
     lastFrame = getTime(); 
    } 

} 

そして、これはキーボードを使用しているとき、私は運動のために使用している方法である:

public void move(){ 
    while(Keyboard.next()){ 
     if(Keyboard.getEventKeyState()){ 
      if(Keyboard.getEventKey() == Keyboard.KEY_RIGHT){ 
       this.x += this.speed * getDelta(); 
      } 
      if(Keyboard.getEventKey() == Keyboard.KEY_UP){ 
       this.y -= this.speed * getDelta(); 
      } 
      if(Keyboard.getEventKey() == Keyboard.KEY_DOWN){ 
       this.y += this.speed * getDelta(); 
      } 
      else if(Keyboard.getEventKey() == Keyboard.KEY_LEFT){ 
       this.x -= this.speed * getDelta(); 
      } 
     } 
    } 
} 

答えて

0
Keyboard.getEventKeyState() 

は、キーが押された場合はtrueを返し、解除された場合はfalseを返します。 フラグを設定して、移動する方向を決定することができます。まさにこの問題に対する他の解決策がありmovingLeft.

に従って左

if (Keyboard.getEventKey() == Keyboard.KEY_A) { 
    if (Keyboard.getEventKeyState()) { 
     movingLeft = true; 
     System.out.println("A Key Pressed"); 
    } 
    else { 
     movingLeft = false; 
     System.out.println("A Key Released"); 
    } 
} 

と移動するだけ

Keyboard.isKeyDown(Keyboard.KEY_A) 

かなり自己説明を使用して、Aがダウンしている場合はtrueを返し、そうでない場合はfalseされます。

+0

これはうまくいきました、ありがとうございました! @eldo –

+0

@Angel Garcia巨大なプロジェクトの途中でない場合はもう一度メモしてください。lwjglを使ってみることをお勧めします3+それはGLFWにウィンドウイングや入力のためのものがたくさんあります。https:// www .lwjgl.org/ – eldo

+0

ああ、ありがとう! @eldo –

関連する問題