2015-12-31 5 views
0

Я использую libgdx в своем проекте 2D-платформы для колледжа. На данный момент я смущен загрузкой tiledmap в libgdx. У меня есть большая карта 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.

EDIT

Код выше не работает, и ниже работает, обратите внимание на maploader загружается другой файл TMX, выше код пытается загрузить 11400x1500 пиксель размером 30x30 плитки, а ниже код пытается загрузить 3800x1500 с 30х30 размером плитки, но я стараюсь использовать код ниже для загрузки больших ТОГО, ее не работает,

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(); 
} 
+0

Он что-нибудь показывает на консоли? Попробуйте включить регистратор. – Sneh

+0

kamera.position.x + = 100 * dt; Просто попробуйте отключить его сейчас и посмотреть, что произойдет. – Sneh

+0

kamera.position.set (550,550,0); Можете ли вы также попробовать использовать 0, 0, 0 здесь, а не 550, 550, 0? – Sneh

ответ

1

Попробуйте этот код, и это должно исправить.

@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(); 
} 

EDIT В исходном коде OP отсутствовал kamera.update() заявление. А также метод изменения размера. Это то, что вызывает проблемы при правильном отображении плиточной карты, поскольку вам необходимо обновить камеру на каждой итерации рендера.

+0

Я обновил вопрос, включив ваш код, но все еще не работает, код, который я обновил, - это мой 'PlayScreen' _class_ – randuwe

+0

Зачем это исправлять? Это лишь менее полезная часть ответа. – msw

+0

Поскольку в решении отсутствовал метод camera.update(), OP теперь редактировал свой вопрос. – Sneh