无法加载 tmx

  • 本文关键字:tmx 加载 libgdx tmx
  • 更新时间 :
  • 英文 :


我在我的2D平台游戏项目中使用libgdx来完成大学任务。目前,我对在libgdx中加载tiledmap感到困惑。我有一个大的tmx地图,大小为11400x1500像素,瓷砖大小为30x30。还有一个和我在图像层中加载的像素大小相同的图像。我试图加载它,但libgdx什么也没显示
我的问题是如何加载单个大tmx地图,还是应该将地图划分为几个部分?因为我试过其他小型tmx(3000x1500)。如果tmx是分开的,那么如何将它们作为一个阶段加载?

public class Layarloh implements Screen{
private JumatUtama game;
private TiledMap map;
private TmxMapLoader mapLoader;
private OrthographicCamera kamera;
private OrthogonalTiledMapRenderer mapRenderer;
private Viewport viewport;
public Layarloh(JumatUtama utama) {
    float l=Gdx.graphics.getWidth(),t=Gdx.graphics.getHeight();
    this.game = utama;
    loadstage();
    kamera = new OrthographicCamera();
    kamera.setToOrtho(false,l,t);
    kamera.update();
    viewport = new FitViewport(l/3,t/3,kamera);
}
public void loadstage(){
    mapLoader = new TmxMapLoader();
    map = mapLoader.load("stage/s11.tmx");
    mapRenderer = new OrthogonalTiledMapRenderer(map);
}
public void stik(float dt){
    if (Gdx.input.isKeyPressed(Input.Keys.ANY_KEY))
        kamera.position.x +=100*dt;
}
@Override
public void render(float delta) {
    stik(delta);
    kamera.position.set(550,550,0);
    kamera.update();
    mapRenderer.setView(kamera);
    mapRenderer.render();
}
@Override
public void resize(int width, int height) {
    kamera.viewportWidth = viewport.getScreenWidth();
    kamera.viewportHeight = viewport.getScreenHeight();
    kamera.update();
}


Unitscale什么都不做,上面的代码适用于较小尺寸的tmx映射。

编辑

上面的代码不起作用,下面的代码起作用,请注意maploader正在加载不同的tmx文件,上面的代码试图加载11400x1500像素的30x30瓦片大小,而下面的代码尝试加载3800x1500像素的30x30瓦片大小,但我试着用下面的代码加载更大的tmx,它不起作用。

public class Layarloh implements Screen{
private JumatUtama game;
private TiledMap map;
private TmxMapLoader mapLoader;
private OrthographicCamera kamera;
private OrthogonalTiledMapRenderer mapRenderer;
public Layarloh(JumatUtama utama) {
    float l=Gdx.graphics.getWidth(),t=Gdx.graphics.getHeight();
    this.game = utama;
    loadstage();
    kamera = new OrthographicCamera();
    kamera.setToOrtho(false,l,t);
    kamera.position.set(550,550,0);
    kamera.update();
}
public void loadstage(){
    mapLoader = new TmxMapLoader();
    map = mapLoader.load("stage/segmen1.tmx");
    mapRenderer = new OrthogonalTiledMapRenderer(map);
}
public void stik(float dt){
    if (Gdx.input.isKeyPressed(Input.Keys.ANY_KEY))
        kamera.position.x +=100*dt;
}
@Override
public void render(float delta) {
    stik(delta);
    kamera.update();
    mapRenderer.setView(kamera);
    mapRenderer.render();
}

试试这个代码,它应该会修复它。

@Override
public void render(float delta) {
    kamera.position.set(x, y, z);
    kamera.update();
    mapRenderer.setView(kamera);
    mapRenderer.render();
}
@Override
public void resize(int width, int height) {
    kamera.viewportWidth = width;
    kamera.viewportHeight = height;
    kamera.update();
}

编辑在原始代码中,OP缺少kamera.update()语句。还有调整大小的方法。这会在正确显示平铺贴图时造成问题,因为您需要在每次渲染迭代时更新相机。

相关内容

  • 没有找到相关文章

最新更新