0

我正在使用 Libgdx 绘制 2d 场景。在绘图之前,我这样做:

batch.setProjectionMatrix(camera.combined);

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

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

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

2) 绘制所有内容,同时记住 (0,0) 现在位于中间,如下所示:

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

请注意,我实际上是在进行视差滚动,并且第一个选项像预期的那样稍微布置了我的中间层对象。所以如果这个问题没有好的解决方案,那么我更倾向于第二种选择。

4

1 回答 1

0

尝试将您的对象保留在“世界空间”中,并将所有从“世界空间”到屏幕的翻译保留在“相机”中(“相机”只是围绕定义为将世界空间转换为屏幕空间的矩阵的抽象)。用有关屏幕的信息污染对象的位置会导致混乱和问题。

具体来说,就您而言,只需致电

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

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

有关更多详细信息,请在 Stack Overflow 上搜索以下 OpenGL 相机问题:在 3d 图形中,什么是相机或眼睛空间?

于 2013-07-26T02:11:36.983 回答