InputPorcessor を実装する InputHandler というクラスを使用しています。ただし、画面をクリックして選択したポイントにプレーヤーを移動できないという問題があります。
その理由は、マップ上で x、y 座標を取得する方法がわからないためです。これを使用して、プレーヤーの新しい位置を設定します。
これは私の InputHandler クラスです
public class InputHandler implements InputProcessor {
private OrthographicCamera cam;
private boolean dragged = false;
private Player player;
private TiledMap map;
private Vector2 oPos;
public InputHandler(OrthographicCamera camera, Player player,
TiledMap map) {
this.cam = camera;
this.player = player;
this.map = map;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer,
int button) {
oPos = new Vector2(Gdx.input.getX(), Gdx.input.getY());
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer,
int button) {
if (!dragged) {
// move the player
} else
dragged = false;
return false;
}
public boolean touchDragged(int x, int y, int pointer) {
dragged = true;
moveCamera(x, y);
return false;
}
private void moveCamera(int touchX, int touchY) {
Vector2 nPos = getNewCameraPosition(touchX, touchY);
cam.translate(nPos.sub(cam.position.x, cam.position.y));
Gdx.app.log(PArena.LOG, "Moved Camera");
oPos.set(touchX, touchY);
}
private Vector2 getNewCameraPosition(int x, int y) {
Vector2 nPos = oPos;
nPos.sub(x, y);
nPos.y = -nPos.y;
nPos.add(cam.position.x, cam.position.y);
return nPos;
}
}