Libgdx TiledMapRenderer与TmxMapLoader峰值

时间:2013-07-13 08:53:16

标签: java libgdx

我正在开发一个滚动游戏中的TiledMapRenderer问题。我目前正在使用带有Tmx Map的BatchTiledMapRenderer(我也尝试使用普通的TiledMapRenderer)。我的相机视图(我正在使用舞台)是16x10的瓷砖,地图长度为98x14。地图在我的计算机上以900x510分辨率渲染得很好但是当我将其增加到1280x720分辨率时,大多数时候我将它移植到我的手机上,偶尔滚动不是那么顺利;但是在大多数情况下它很顺利。我还要提一下,我的瓷砖组是由64x64瓷砖制成的。

我目前对我做错了什么感到困惑,我很感激您提供的任何建议。以下是代码的一部分。

摄像机位置在我的mainCharacter课程内更新,该课程延伸Actor课程,并在游戏运行时每帧更新。

在我的Actor act方法中:

world.getCamera().position.set(this.getX(), (MyFirstGame.CAMERA_HEIGHT+2)/2f, 0);

在我的Stage课程中:

private TiledMap map;
private BatchTiledMapRenderer renderer;

Stage构造函数中:

Assets.manager.setLoader(TiledMap.class, new TmxMapLoader(new InternalFileHandleResolver()));
Assets.manager.load("data/maps/" + level + ".tmx", TiledMap.class);
Assets.manager.finishLoading();
map = Assets.manager.get("data/maps/" + level + ".tmx");
renderer = new OrthogonalTiledMapRenderer(map, 1f / 64f);

Stage渲染方法中:

this.getCamera().update();
renderer.setView((OrthographicCamera) this.getCamera());
renderer.getSpriteBatch().begin();
renderer.renderTileLayer(skyLayer);
renderer.renderTileLayer(layer2);
renderer.renderTileLayer(layer3);
renderer.renderTileLayer(layer4);
renderer.renderTileLayer(layer5);
renderer.renderTileLayer(foregroundLayer);
renderer.renderTileLayer(waterLayer);
renderer.getSpriteBatch().end();

super.draw();

1 个答案:

答案 0 :(得分:0)

它实际上是这样做的原因很简单,我发起的游戏的其他状态(崩溃)仍然在运行。要解决此问题,我在main(String[] args)方法中执行了此操作:

try {
public static void main(String[] args) {
    config = new LwjglApplicationConfiguration();
    config.vSyncEnabled = true;
    config.width = 1920;
    config.height = 1080;
    config.useGL20 = true;
    config.title = "AHH";
    new LwjglApplication(new GameClass(), config);
}
catch (Exception e) {
Gdx.app.exit();
System.out.println(e);
}

另外,我建议通过打开任务管理器确保游戏的所有其他实例都已关闭。