我正在用libGDX制作一个游戏,我决定用box2dlights来渲染灯光。到目前为止,我没有那么多地使用相机,因为我已经用纯LWJGL完成了大部分代码。有两个主要的操作,我需要做的坐标的一切。
第一种方法是将屏幕转换为地图的位置(地图比屏幕大,播放机的位置定义了地图的哪个部分是可见的)。例如,如果玩家在(50,30),我用(-50,-30)翻译所有的东西,这样播放器就在中间。
第二件事是用一个常量乘以所有的东西,即从box2d米到屏幕上的像素的转换。
但是,由于我没有访问box2dlights呈现的权限,所以我需要将这两个信息传递给射线处理程序,而唯一的方法就是通过相机。因此,我创建了一个正交相机,并将其在deltaS中翻译成每个滴答,而不是从每个坐标手工减去deltaS。那部分工作得很完美。另一方面,变焦功能似乎不起作用,因为它是在屏幕中间的基础上放大的。例如,如果我设置了缩放= 2,屏幕就会缩小两次,但它是以屏幕为中心的。坐标(0,0)不是(0,0),正如我所期望的那样,而是屏幕. would /4。
有任何方法来设置相机,使它把每个坐标乘以一个数字,你会假设缩放函数应该做,或者有任何方法可以直接在box2dlights上做吗?我不知道我的问题是很清楚还是很常见,但我在任何地方都找不到任何东西。
发布于 2013-09-16 11:53:47
我终于想出来了!问题是,我需要在使用之前设置缩放。
camera.setToOrtho(true, SCREEN_WIDTH, SCREEN_HEIGHT);因为该方法使用当前缩放设置其属性。希望这能有所帮助!
https://stackoverflow.com/questions/18787331
复制相似问题