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