2

在使用夹在玩家(box2d-Body)上的相机滚动时,我在平铺地图上有奇怪的伪影。

在遇到这个问题之前,我对 tiledmap 使用了线性过滤器,它可以防止那些奇怪的伪影发生,但会导致纹理出血(我直接从 .tmx 文件加载了 tiledmap 而没有填充切片)。

但是现在我使用的是最近的过滤器,它可以消除流血,但是当滚动地图时(通过在夹着凸轮的情况下行走角色),它会像很多像素一样在周围闪烁。闪烁结果可能会变得更好或更糟,具体取决于相机的缩放值。但是当我使用 libgdx-Utilities 中的“OrthoCamController”类时,它允许通过用鼠标/手指平移来滚动地图,我根本没有得到这些工件。我认为闪烁可能是由 box2d-Body 的位置接收到的错误相机位置值引起的。我应该在这里添加一件事:游戏实例以 1280*720 显示模式运行,而我的游戏摄像机仅渲染 800*480。温我将游戏摄像机的渲染解决方案更改为 1280*720 我没有得到那些伪像,但是瓷砖太小了。

有没有人遇到过这个问题或知道如何解决这个问题?:)

4

2 回答 2

2

我遇到了类似的问题,发现这是由于相机位置的十进制值太小。

我认为可能发生的是在 tilemap 渲染器中对某些 tile 列/行进行某种舍入。

我通过四舍五入到设定的精度来解决这个问题,如下所示:

camera.position.x = Math.round(player.entity.getX() * scalePosition) / scalePosition;

尝试各种值,但我通过使用图块大小作为 scalePosition 值来实现它。

于 2014-01-22T11:16:10.480 回答
1

关于tilesets,我在这里发布了一个解决方案:Getting gaps between tiled textures with libgdx

我一直在使用 Tiled 本身的方法。在 Tiled 中导入图块集时,您必须调整“margin”和“spacing”才能使效果生效。

它 100% 为我工作 :)

于 2014-01-22T09:48:37.790 回答