我几天来一直在修复LibGDX。我已经设法将Isometric Tiled Map渲染到屏幕上,但我似乎无法弄清楚如何正确地居中。这是代码:
public class PlayScreen implements Screen {
private TiledMap map;
private IsometricTiledMapRenderer isometricRenderer;
private OrthographicCamera camera;
public void createUI() {
// Load map from tiled .tmx file.
map = new TmxMapLoader().load("arena1/arena1.tmx");
// Setup isometric renderer and camera.
isometricRenderer = new IsometricTiledMapRenderer(map);
camera = new OrthographicCamera();
}
@Override
public void show() {
Gdx.gl.glClearColor(0, 0, 1, 1);
createUI();
}
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
isometricRenderer.setView(camera);
isometricRenderer.render();
}
@Override
public void resize(int width, int height) {
camera.viewportWidth = width;
camera.viewportHeight = height;
camera.update();
}
@Override
public void pause() {}
@Override
public void resume() {}
@Override
public void hide() {}
@Override
public void dispose() {
map.dispose();
isometricRenderer.dispose();
}
}
这就是我得到的:
提前谢谢!
答案 0 :(得分:0)
Tiled map没有setPosition
方法或类似的东西。所以你应该做的是移动你的相机。
在渲染方法中调用此方法以通过WASD移动相机:
private void cameraController(Camera camera){
if (Gdx.input.isKeyPressed(Input.Keys.W)) {
camera.translate(0, 10, 0);
}
if (Gdx.input.isKeyPressed(Input.Keys.S)) {
camera.translate(0, -10, 0);
}
if (Gdx.input.isKeyPressed(Input.Keys.A)) {
camera.translate(-10, 0, 0);
}
if (Gdx.input.isKeyPressed(Input.Keys.D)) {
camera.translate(10, 0, 0);
}
}
您也可以将10更改为您想要的速度。
或者如果您不想通过WASD移动它,您可以直接设置位置。
camera.setPosition(x, y, z);
答案 1 :(得分:0)
使用
进行管理camera.position.set(768, 0, 0);
768是地图宽度的一半。