Я пытаюсь отобразить мозаичную карту на весь экран.Проблема в том, что сверху или справа 100px, там все просто черное.Моя мозаичная карта составляет около 100 плиток, поэтому она должна иметь возможность рендерить больше, чем отображает.
Вот как это выглядит сейчас:
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 на изображении)?