我在我的2D平台游戏项目中使用libgdx
进行大学任务。现在我很困惑在libgdx中加载tiledmap。我有一个大的tmx地图,大小为11400x1500像素,大小为30x30。也是一个图像具有相同的像素大小,我把它加载到图像层。我尝试加载它,但libgdx什么也没有显示。
我的问题是如何加载单个大tmx地图,或者我应该把地图分成几个段/部分?因为我试过其他小型tmx(3000x1500)。如果tmx被分割,那么如何将它们加载为一个阶段?无法加载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像素与30×瓦片尺寸,而下面的代码试图加载3800x1500与30×瓷砖的大小,但我尝试使用下面的代码加载更大的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();
}
它显示任何东西在控制台上?尝试启用记录器。 – Sneh
kamera.position.x + = 100 * dt;现在就尝试禁用它,看看会发生什么。 – Sneh
kamera.position.set(550,550,0);你可以尝试在这里使用0,0,0而不是550,550,0吗? – Sneh