Java LibGDX: Tiledmap не рендерит сверху и справа - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь отобразить мозаичную карту на весь экран.Проблема в том, что сверху или справа 100px, там все просто черное.Моя мозаичная карта составляет около 100 плиток, поэтому она должна иметь возможность рендерить больше, чем отображает.

Вот как это выглядит сейчас: my game right now

1: эта полоса ожидается какВ настоящее время у меня нет ничего для рендеринга.

2 & 3: Эти бары неожиданны, так как есть больше частей моей мозаичной карты для рендеринга.

Я уже пытался изменитьмой Viewport из StretchViewport в FitViewport, а также FillViewport, но это ничего не меняет.

Вот мой конструктор в классе PlayScreen:

    public Play(GameStateManager gsm) {
       super(gsm);

       //set up box2d
       world = new World(new Vector2(0, -20.81f), true);
       cl = new MyContactListener();
       world.setContactListener(cl);
       b2dr = new Box2DDebugRenderer();

       //set up viewport
       vw = new StretchViewport(1280, 720, cam);
       cam.update();

       //create player
       createPlayer();

       //create tiles
       createTiles();

       //setup box2D cam
       b2dCam = new OrthographicCamera();
       b2dCam.setToOrtho(false, Game.V_WIDTH / PPM, Game.V_HEIGHT / PPM);
    }

Вот мой метод createTiles ():

    private void createTiles(){
        loader = new TmxMapLoader();

        tileMap = loader.load("data/lvl1.tmx");
        tmr = new OrthogonalTiledMapRenderer(tileMap);
        cam.update();

        //get the size of the tiles
        tileSize = tileMap.getProperties().get("tilewidth", Integer.class);

        //create box2d bodies for all tiledmap layers
        TiledMapTileLayer layer;

        layer = (TiledMapTileLayer) tileMap.getLayers().get("red");
        createLayer(layer, B2DVars.BIT_RED);

        layer = (TiledMapTileLayer) tileMap.getLayers().get("orange");
        createLayer(layer, B2DVars.BIT_ORANGE);

        layer = (TiledMapTileLayer) tileMap.getLayers().get("yellow");
        createLayer(layer, B2DVars.BIT_YELLOW);

        layer = (TiledMapTileLayer) tileMap.getLayers().get("green");
        createLayer(layer, B2DVars.BIT_GREEN);

        layer = (TiledMapTileLayer) tileMap.getLayers().get("blue");
        createLayer(layer, B2DVars.BIT_BLUE);

        layer = (TiledMapTileLayer) tileMap.getLayers().get("pink");
        createLayer(layer, B2DVars.BIT_PINK);
    }

Метод render ():

    public void render(float delta) {
     //clear screen
     Gdx.gl.glClearColor(0.619607843f, 0.79607843137f, 1, 1);
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

     //set cam to follow player
     cam.position.set(
          player.getPosition().x * PPM + Game.V_WIDTH / 4,
          Game.V_HEIGHT / 2, 
          0
     );

     //draw tile map
     tmr.setView(cam);
     tmr.render();

     //draw player
     sb.setProjectionMatrix(cam.combined);
     player.render(sb);

     //draw box2d world
     b2dr.render(world, b2dCam.combined);

     //responsive resizing
     resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}

А вот метод create () внутри моего основного игрового класса:

    public void create () {
    Gdx.input.setInputProcessor(new MyInputProcessor());

    //asset managing
    res = new Content();
    res.loadTexture("data/player/player.png", "player");

    sb = new SpriteBatch();
    cam = new OrthographicCamera();
    cam.setToOrtho(false, V_WIDTH, V_HEIGHT);
    hudCam = new OrthographicCamera();
    hudCam.setToOrtho(false, V_WIDTH, V_HEIGHT);
    gsm = new GameStateManager(this);
}

Я не ожидал этогоигра, чтобы получить эти черные полосы, я создал другие игры раньше, и они никогда не получали их.Как я могу удалить их (2 и 3 на изображении)?

...