关于相机更优雅的方法

时间:2013-07-25 09:51:12

标签: java camera coordinates libgdx

我正在使用Libgdx绘制一个2D场景。在绘图之前我这样做:

batch.setProjectionMatrix(camera.combined);

正如预期的那样,(0,0)坐标不再位于屏幕的左下方,而是位于屏幕的中间位置。

正确定位整个场景会有什么更优雅的解决方案:

1)相应地翻译/定位相机以显示屏幕上的所有内容。

2)画出一切,同时记住(0,0)现在位于中间,如下:

batch.draw(background, -background.getRegionWidth()/2, -background.getRegionHeight()/2);

请注意,我实际上正在执行Parallax scrolling,并且第一个选项会按预期处理我的midground图层对象。因此,如果这个问题没有很好的解决方案,那么我更倾向于第二种选择。

1 个答案:

答案 0 :(得分:0)

尝试将对象保留在“世界空间”中,并将“世界空间”中的所有翻译保留在“相机”中的屏幕上(“相机”只是定义的矩阵周围的抽象< / em>将世界空间转换为屏幕空间)。使用有关屏幕的信息污染对象的位置将导致混淆和问题。

具体来说,在您的情况下,请致电

camera.translate(width/2, height/2, 0);

让(0,0)回到左下方(如果你的“世界空间”完全在正坐标空间中。

有关详细信息,请搜索Stack Overflow以查找OpenGL相机问题:In 3d graphics, what is camera or eye space?