Libgdx TiledMap 渲染部分瓦片
Libgdx TiledMap renders partial tiles
我在使用 Tiled 和 Libgdx 时遇到问题。我正在制作一个滚动平台游戏,我正在尝试制作 1 个(目前)会自我重复的背景。 Tiled 中的主地图由一个接一个堆叠的各种图像组成,一旦我填充了构成完整背景的所有单元格(正常的东西..)
我的问题来自渲染,如下图所示,当我将主角向右移动时,图像突然消失了,我知道平铺渲染器应该只有效渲染您将看到的内容,但是在这种情况下,我仍然看到渲染器刚刚停止渲染的区域。
如何让渲染器等到图块离开相机后再停止渲染?
图片:
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);
}
}
问题是 "solved"。我用另一张用较小的图块集制作的地图测试了相同的代码,显然如果图块太大就会发生这种情况。现在唯一的问题是出现了一些黑线,但似乎是缺少填充。如果有人遇到类似情况,请尝试使用较小的瓷砖。
我在使用 Tiled 和 Libgdx 时遇到问题。我正在制作一个滚动平台游戏,我正在尝试制作 1 个(目前)会自我重复的背景。 Tiled 中的主地图由一个接一个堆叠的各种图像组成,一旦我填充了构成完整背景的所有单元格(正常的东西..)
我的问题来自渲染,如下图所示,当我将主角向右移动时,图像突然消失了,我知道平铺渲染器应该只有效渲染您将看到的内容,但是在这种情况下,我仍然看到渲染器刚刚停止渲染的区域。
如何让渲染器等到图块离开相机后再停止渲染?
图片:
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);
}
}
问题是 "solved"。我用另一张用较小的图块集制作的地图测试了相同的代码,显然如果图块太大就会发生这种情况。现在唯一的问题是出现了一些黑线,但似乎是缺少填充。如果有人遇到类似情况,请尝试使用较小的瓷砖。