首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载tmx

无法加载tmx
EN

Stack Overflow用户
提问于 2015-12-31 19:39:06
回答 1查看 216关注 0票数 0

我在我的2D平台游戏项目中使用libgdx来完成大学任务。目前,我对在libgdx中加载tiledmap感到困惑。我有一个大的tmx地图,大小为11400x1500像素和30x30瓦片大小。还有一个具有相同像素大小的图像,我将其加载到图像层。我尝试加载它,但libgdx没有显示任何内容。

我的问题是如何加载单个大的tmx地图,或者我应该将地图分成几个部分/部分?因为我已经尝试过其他小的tmx (3000x1500)。如果tmx被分割,那么如何将它们加载为一个阶段?

代码语言:javascript
复制
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,它不起作用。

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

发布于 2016-01-01 10:46:01

尝试这段代码,这应该可以修复它。

代码语言:javascript
复制
@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()语句。还有resize方法。这在正确显示平铺贴图时会导致问题,因为您需要在渲染的每次迭代中更新摄影机。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34545949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档