0

我正在 libGDX 中制作游戏,我决定使用 box2dlights 来渲染灯光。到目前为止,我并没有过多地使用相机,因为我已经在纯 LWJGL 中完成了大部分代码。我需要对所有内容的坐标进行两个主要操作。

首先是把屏幕翻译成地图的位置(地图比屏幕大,玩家的位置决定了地图的哪一部分是可见的)。例如,如果玩家在 (50, 30),我将所有内容翻译为 (-50, -30),这样玩家就在中间。

第二件事是将所有内容乘以一个常数,即从 box2d 米到屏幕上的像素的转换。

但是,由于我无法访问 box2dlights 渲染,因此我需要将这两个信息传递给光线处理程序,而唯一的方法是通过 Camera。因此,我创建了一个正交相机,并在绘制之前的每个刻度将其转换为 deltaS,而不是手动从每个坐标中减去 deltaS。那部分工作得很好。另一方面,zoom thingy 似乎不起作用,因为它在屏幕中间放大和缩小。例如,如果我设置 zoom = 2,屏幕缩小了两次,但它在屏幕上居中。正如我所料,坐标 (0,0) 不是 (0,0),而是 screen.width/4。

有没有办法设置相机,以便将每个坐标乘以一个数字,你会假设缩放功能应该做,或者有什么方法可以直接在 box2dlights 上做吗?我不知道我的问题是否非常明确或普遍,但我在任何地方都找不到任何东西。

4

1 回答 1

0

我终于想通了!问题是我需要在使用之前设置缩放

camera.setToOrtho(true, SCREEN_WIDTH, SCREEN_HEIGHT);

因为该方法使用当前缩放来设置其属性。希望这可以帮助!

于 2013-09-16T11:53:47.830 回答