LibGDX TiledMap 卡在舞台的相机上
LibGDX TiledMap stuck to camera from Stage
我有一个带有舞台和 TiledMap 的屏幕。地图渲染良好,但尝试移动相机不会对地图做任何事情。在下面的代码中,相机向右移动,结果图像在屏幕上向左移动,但地图保持 "glued" 到屏幕。
Before
About Half A Second Later
public class TestScreen implements Screen{
private Stage stage;
private TiledMap testMap;
private OrthogonalTiledMapRenderer mapRenderer;
private Image image;
public TestScreen() {
stage = new Stage(new StretchViewport(GameBase.WIDTH, GameBase.HEIGHT));
testMap = GameBase.assets.getLevel("level25");
image = new Image(GameBase.assets.getTexture("sleuth"));
stage.addActor(image);
mapRenderer = new OrthogonalTiledMapRenderer(testMap, 1f);
mapRenderer.setView(stage.getCamera().combined, 0, 0, GameBase.WIDTH, GameBase.HEIGHT);
image.setOrigin(Align.center);
}
@Override
public void show() {
// TODO Auto-generated method stub
}
@Override
public void render(float delta) {
image.rotateBy(2);
stage.getCamera().position.x += 5;
stage.getCamera().update();
mapRenderer.render();
stage.act(delta);
stage.draw();
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
}
您必须在每一帧调用 mapRenderer.setView(stage.getCamera());
以更新瓦片地图上的视图。
我有一个带有舞台和 TiledMap 的屏幕。地图渲染良好,但尝试移动相机不会对地图做任何事情。在下面的代码中,相机向右移动,结果图像在屏幕上向左移动,但地图保持 "glued" 到屏幕。
Before
About Half A Second Later
public class TestScreen implements Screen{
private Stage stage;
private TiledMap testMap;
private OrthogonalTiledMapRenderer mapRenderer;
private Image image;
public TestScreen() {
stage = new Stage(new StretchViewport(GameBase.WIDTH, GameBase.HEIGHT));
testMap = GameBase.assets.getLevel("level25");
image = new Image(GameBase.assets.getTexture("sleuth"));
stage.addActor(image);
mapRenderer = new OrthogonalTiledMapRenderer(testMap, 1f);
mapRenderer.setView(stage.getCamera().combined, 0, 0, GameBase.WIDTH, GameBase.HEIGHT);
image.setOrigin(Align.center);
}
@Override
public void show() {
// TODO Auto-generated method stub
}
@Override
public void render(float delta) {
image.rotateBy(2);
stage.getCamera().position.x += 5;
stage.getCamera().update();
mapRenderer.render();
stage.act(delta);
stage.draw();
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
}
您必须在每一帧调用 mapRenderer.setView(stage.getCamera());
以更新瓦片地图上的视图。