Gestione Input
Polling (Interrogazione)
Il modo più semplice per gestire l’input è chiedere a Gdx “questo tasto è premuto ora?”.
Si fa dentro il metodo render().
```java if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) { player.x -= 200 * Gdx.graphics.getDeltaTime(); }
if (Gdx.input.isTouched()) { // Mouse click o touch Vector3 touchPos = new Vector3(); touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0); camera.unproject(touchPos); // Converti da coordinate schermo a mondo di gioco player.x = touchPos.x; } ```
Event Driven (InputProcessor)
Per eventi “discreti” come “tasto premuto una volta” (non tenuto premuto) o “scrolling del mouse”, usa InputProcessor.
```java public class MyGame extends ApplicationAdapter implements InputProcessor {
@Override
public void create() {
Gdx.input.setInputProcessor(this); // Diciamo a Gdx di mandare gli eventi qui
}
@Override
public boolean keyDown(int keycode) {
if (keycode == Input.Keys.SPACE) {
player.jump();
}
return true; // L'evento è stato gestito
}
@Override
public boolean keyUp(int keycode) {
return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
return false;
}
// ... implementa gli altri metodi ...
} ```
InputMultiplexer
Se hai bisogno sia di una UI (che consuma i click) sia del gioco (che controlla il player), usa un Multiplexer.
```java InputMultiplexer multiplexer = new InputMultiplexer(); multiplexer.addProcessor(stage); // Prima la UI (Stage di Scene2D) multiplexer.addProcessor(this); // Poi il gioco Gdx.input.setInputProcessor(multiplexer); ```