我正在开发一个滚动游戏中的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();
答案 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);
}
另外,我建议通过打开任务管理器确保游戏的所有其他实例都已关闭。