ポーリングとは、現在の入力デバイスの状態を確認することを言います。例えば、特定のキーが押された状態になっているか、画面上の指で押された最初の位置はどこか、などを確認できます。 この方法だとユーザーの入力を素早く簡単に処理でき、ほとんどのアーケードゲームではこの方法で十分です。
注意: ポーリングだけを使用していると、例えば素早いペースでキーダウン/キーアップが行われた場合にイベントを見落とす可能性があります。 特定の順序で行われる入力が完了したことを確認する必要がある場合は、代わりにイベント処理 を使用してください。
キーボードからの入力のポーリングを行うには、以下のように簡単なコード一行だけでできます。
boolean isAPressed = Gdx.input.isKeyPressed(Keys.A);
このメソッドには、引数としてキーコードを渡します。
これらのコードをわざわざ覚えなくても、使用できるコードが格納されている静的クラスが Input
インタフェース内にあります。
キーコード一覧は ここで見られます。
タッチスクリーン/マウスのポーリングに関するメソッドはたくさんあります。 現在一つ以上の指が画面上に触れているかどうか(マウスボタンが押されているのに相当)を確認するには、以下のように行います:
boolean isTouched = Gdx.input.isTouched();
マルチタッチ入力の場合、特定の指(ポインター)が画面上に触れているかどうかをあなたは知りたいかもしれません:
// Will Return whether the screen is currently touched boolean firstFingerTouching = Gdx.input.isTouched(0); boolean secondFingerTouching = Gdx.input.isTouched(1); boolean thirdFingerTouching = Gdx.input.isTouched(2);
画面に触れた各指には、いわるゆポインタインデックスが割り振られます。最初に画面に触れた指にはインデックス 0が割り振られ、次に画面に触れた指にはインデックス 1 が割り振られる、といった流れです。他の指が画面にずっと触れている状態で、ある指が画面から離れて再び画面に触れた場合、その指には空いているインデックスが割り振られます。例:
デスクトップ環境やブラウザ環境では、あなたは言わば"指"を一つだけ持っている状態です。
ユーザーが任意の指が押したり離したりしたかどうかを確認した場合は、以下のメソッドも使用できます:
// Will return whether the screen has just been touched boolean justTouched = Gdx.input.justTouched();
このメソッドは、一連のタッチダウン/タッチアップを本当に素早く確認したい状況で使用できます。例えば、"タッチしてゲームを続けます"と表示された画面上など。 これはポーリングに基づいているので、信頼性が高いメソッドではないので注意してください。
特定の指の座標を取得するには、以下のメソッドを使用します:
int firstX = Gdx.input.getX(); int firstY = Gdx.input.getY(); int secondX = Gdx.input.getX(1); int secondY = Gdx.input.getY(1);
上記では、インデックス0のポインタ(0は既定値)とインデックス1のポインタのタッチ座標を取得します。 座標は画面上の座標系で通知されます。 開始点(0,0)は画面に左上隅となり、X軸は左方向へ進み、Y軸は下方向へ進みます。
デスクトップ環境では、現在どのマウスボタンが押されているかも確認できます:
boolean leftPressed = Gdx.input.isButtonPressed(Input.Buttons.LEFT); boolean rightPressed = Gdx.input.isButtonPressed(Input.Buttons.RIGHT);
他の定数については Buttons クラスを参照してください。
Android環境では、マウスの左ボタンのみが再現されるので注意してください。 タッチイベントでは、マウスの左ボタンが押されてそのイベントが発生したと見なされます。 タッチスクリーンには左ボタン・右ボタン・中央ボタンの概念がありません。