LWJGL Basics 2 (Input)
LWJGL Basics 2 (Input)
このサンプルで扱われているのはマウスとキーボードからの入力についてで、それぞれMouse, Keyboardクラスを利用しています。
マウス
マウスの位置については、Mouse.getX(), Mouse.getY() でウィンドウ内でのXY座標を取得できます。座標原点は左下となっています。
また、クリックされたボタンの判定は Mouse.isButtonDown() で判定します。このメソッドは引数に0-2の整数を受け取り、クリックされた場合はtrueを返します。引数となる整数値は0から2までそれぞれ、左クリック、右クリック、中クリックに対応しています。
キーボード
キーボードは Keyboard.isKeyDown(Keyboard.KEY_X) のようにして判定します。引数をKeyboard.KEY_Xとするとxキー、Keyboard.KEY_Aとするとaキーというように、入力されたキーを特定できます。
イベントバッファー
入力イベントを全て処理するような場合には、Keyboard.next() や Mouse.next() メソッドを使用します。
入力の状態を取得するには Keyboard.getEventKeyState(), Mouse.getEventButtonState() が利用でき、押された状態であれば true を取得できます。
また、どのキーの入力イベントか判定するには Keyboard.getEventKey(), Mouse.getEventButton() を使用します。返り値は Keyboard.KEY_A や Keyboard.KEY_X などの入力値となっています。
import org.lwjgl.LWJGLException; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; public class InputExample { public void start() { try { Display.setDisplayMode(new DisplayMode(800, 600)); Display.create(); } catch (LWJGLException e) { e.printStackTrace(); System.exit(0); } while (!Display.isCloseRequested()) { pollInput(); Display.update(); } Display.destroy(); } public void pollInput() { if (Mouse.isButtonDown(0)) { int x = Mouse.getX(); int y = Mouse.getY(); System.out.println("MOUSE DOWN @ X: " + x + " Y: " + y); } if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) { System.out.println("SPACE KEY IS DOWN"); } while (Keyboard.next()) { if (Keyboard.getEventKeyState()) { if (Keyboard.getEventKey() == Keyboard.KEY_A) { System.out.println("A Key Pressed"); } if (Keyboard.getEventKey() == Keyboard.KEY_S) { System.out.println("S Key Pressed"); } if (Keyboard.getEventKey() == Keyboard.KEY_D) { System.out.println("D Key Pressed"); } } else { if (Keyboard.getEventKey() == Keyboard.KEY_A) { System.out.println("A Key Released"); } if (Keyboard.getEventKey() == Keyboard.KEY_S) { System.out.println("S Key Released"); } if (Keyboard.getEventKey() == Keyboard.KEY_D) { System.out.println("D Key Released"); } } } } public static void main(String[] argv) { InputExample inputExample = new InputExample(); inputExample.start(); } }
このサンプルで扱われているのはマウスとキーボードからの入力についてで、それぞれMouse, Keyboardクラスを利用しています。
マウス
マウスの位置については、Mouse.getX(), Mouse.getY() でウィンドウ内でのXY座標を取得できます。座標原点は左下となっています。
また、クリックされたボタンの判定は Mouse.isButtonDown() で判定します。このメソッドは引数に0-2の整数を受け取り、クリックされた場合はtrueを返します。引数となる整数値は0から2までそれぞれ、左クリック、右クリック、中クリックに対応しています。
キーボード
キーボードは Keyboard.isKeyDown(Keyboard.KEY_X) のようにして判定します。引数をKeyboard.KEY_Xとするとxキー、Keyboard.KEY_Aとするとaキーというように、入力されたキーを特定できます。
イベントバッファー
入力イベントを全て処理するような場合には、Keyboard.next() や Mouse.next() メソッドを使用します。
入力の状態を取得するには Keyboard.getEventKeyState(), Mouse.getEventButtonState() が利用でき、押された状態であれば true を取得できます。
また、どのキーの入力イベントか判定するには Keyboard.getEventKey(), Mouse.getEventButton() を使用します。返り値は Keyboard.KEY_A や Keyboard.KEY_X などの入力値となっています。
コメント
コメントを投稿