我正在使用Libgdx绘制一个2D场景。在绘图之前我这样做:
batch.setProjectionMatrix(camera.combined);
正如预期的那样,(0,0)坐标不再位于屏幕的左下方,而是位于屏幕的中间位置。
正确定位整个场景会有什么更优雅的解决方案:
1)相应地翻译/定位相机以显示屏幕上的所有内容。
2)画出一切,同时记住(0,0)现在位于中间,如下:
batch.draw(background, -background.getRegionWidth()/2, -background.getRegionHeight()/2);
请注意,我实际上正在执行Parallax scrolling,并且第一个选项会按预期处理我的midground图层对象。因此,如果这个问题没有很好的解决方案,那么我更倾向于第二种选择。
答案 0 :(得分:0)
尝试将对象保留在“世界空间”中,并将“世界空间”中的所有翻译保留在“相机”中的屏幕上(“相机”只是定义的矩阵周围的抽象< / em>将世界空间转换为屏幕空间)。使用有关屏幕的信息污染对象的位置将导致混淆和问题。
具体来说,在您的情况下,请致电
camera.translate(width/2, height/2, 0);
让(0,0)回到左下方(如果你的“世界空间”完全在正坐标空间中。
有关详细信息,请搜索Stack Overflow以查找OpenGL相机问题:In 3d graphics, what is camera or eye space?