Libgdx TiledMap渲染部分图块

时间:2015-12-02 03:45:07

标签: android libgdx render tiled tmx

我遇到了Tiled和Libgdx的问题。我正在制作一个滚动平台游戏,我正在尝试制作1(现在)背景,这将重演。 Tiled中的主要地图是由各种图像堆叠在一起,一旦我填满构成完整背景的所有单元格(正常的东西......)

我的问题来自渲染,正如你在下面的图像中看到的那样,当我向右移动主角时,图像突然消失,我知道平铺的渲染器应该只能有效地渲染你将会看到但是在这里case我仍然看到渲染器停止渲染的区域。

在渲染停止渲染之前,如何让渲染器等到贴片不在相机中?

图片:

Starting position is like at the middle of the first tile

Almost getting out of the first tile

至于代码,我基本上使用this tutorial中的代码,因为我目前正在测试这样的事情:

public class PlayScreen implements Screen {

private OrthographicCamera camera;
private Viewport viewport;

private World world;
private Box2DDebugRenderer b2dRenderer;


// Map

private TiledMap tiledMap;
private OrthogonalTiledMapRenderer mapRenderer;


public PlayScreen(PGame game) {
    this.game = game;
    camera = new OrthographicCamera();
    camera.setToOrtho(false, PGame.V_WIDTH, PGame.V_HEIGHT);       

    viewport = new FitViewport(PGame.V_WIDTH / Constants.PPM, PGame.V_HEIGHT / Constants.PPM, camera);
    camera.position.set(viewport.getWorldWidth() / 4, viewport.getWorldHeight() / 2, 0);

    // No gravity for now..
    world = new World(new Vector2(0, -0*9.81f), true);
    b2dRenderer = new Box2DDebugRenderer();

    // create the box of the player seen in the image
    .....


    TmxMapLoader loader = new TmxMapLoader();

    tiledMap = loader.load("backgrounds/1.tmx");
    float unitScale = 1 / 100f;
    mapRenderer = new OrthogonalTiledMapRenderer(tiledMap, unitScale);




}

public void update(float delta) {

    // handle input to move the b2d body
    .....


    world.step(1 / 60f, 6, 2);

    // Make the camera follow the player
    camera.position.set(player.getPosition());

    camera.update();
}

@Override
public void render(float delta) {
    update(delta);

    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);


    mapRenderer.setView(camera);
    mapRenderer.render();

    b2dRenderer.render(world, camera.combined);

}

}

1 个答案:

答案 0 :(得分:0)

问题是"解决了#34;。我用另一个用较小的tileset制作的地图测试了相同的代码,显然如果你的瓷砖太大,就会发生这种情况。现在唯一的问题是出现了一些黑线,但似乎缺少填充。如果有人遇到这样的事情,请尝试使用较小的瓷砖。