【发布时间】:2016-03-06 05:02:11
【问题描述】:
我在使用 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);
}
}
【问题讨论】:
-
没有代码没人能帮你
-
@george ,就像我上面提到的那样,我使用的代码几乎与 LibGDX wiki 中解释的代码相同。我把代码放在这里,还删掉了一些不必要的代码。如果这对您有帮助,请告诉我
标签: android libgdx render tiled tmx