Я использую 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();
}
Он что-нибудь показывает на консоли? Попробуйте включить регистратор. – Sneh
kamera.position.x + = 100 * dt; Просто попробуйте отключить его сейчас и посмотреть, что произойдет. – Sneh
kamera.position.set (550,550,0); Можете ли вы также попробовать использовать 0, 0, 0 здесь, а не 550, 550, 0? – Sneh