我已经试了两天来解决这个问题,但是现在放弃寻找现有的解决方案。
我开始学习libgdx并完成了一些教程。现在,我试图使用我所学的创建一个简单的侧向滚动游戏。我知道有libgdx的这种示例,但我没有找到一个将Box2d与scene2d和actors以及平铺地图相结合的解决方案。
我的主要问题在于相机。
您需要一个相机来为舞台(据我所知,用于传递给演员的SpriteBatch的投影矩阵的方法draw(),如果有误,请纠正我),并且您需要一个相机来呼叫TileMapRender的render()方法。此外,在某些教程中,GameScreen中有一个OrthographicCamera,可以根据需要使用它。
我尝试将OrthographicCamera对象传递给方法,我尝试在所有地方都使用来自舞台和TileMapRenderer的相机。 例如:
OrthographicCamera ocam = new OrthographicCamera(FRUSTUM_WIDTH, FRUSTUM_HEIGHT);
stage.setCamera(ocam); // In the other cases i replace ocam with stage.getCamera() or the one i use for the tileMap Render
tileMapRenderer.render(ocam);
stage.getSpriteBatch().setProjectionMatrix(ocam.combined); // I am not sure if this is needed
我也尝试在不同的位置使用不同的相机。
尝试了所有这些后,我没有注意到发生了什么,但我会列出发生了什么:
- 屏幕上什么也没有(可能是相机离绘制的东西太远)
- 我可以从debugRenderer中看到平铺地图和轮廓(我也使用debugRender,但我不认为它会干扰相机),但演员的精灵不可见(可能在屏幕外)
- 我可以看到应该看到的一切,但当我尝试移动演员和相机(应该跟随演员),精灵比身体(绿色调试正方形)移动得更快。
所以我的主要问题是:
- 我不明白当你有多个相机时会发生什么。你实际上是通过哪一个看到监视器上的画面?
- 我应该使用多个相机吗?如何使用?
另外,我想提到我正在使用OpenGL ES 2.0。
非常抱歉问题很长,但我觉得我应该详细描述,因为对我来说有点复杂。