为什么我在使用Tiled制作libgdx游戏时会出现横跨整个屏幕的线条?

9

我正在使用LibGdx和Tiled,当在屏幕上移动时,游戏中会出现水平和垂直线条。如果需要,我可以发布任何您需要的代码。如何让这些线停止出现?

Still image of said lines

这是一段关于线条的Gfycat gif:

http://gfycat.com/FastUnnaturalAmericanwirehair

编辑:

这是一个很小的Bitbucket存储库,我尽可能地将其缩小,其中包含相同的故障:

https://bitbucket.org/Chemical_Studios/example-of-line-glitch/src/8eeb153ec02236d836763072611bd7aa55d38495/minimalExample/src/com/weebly/chemicalstudios/minEx/?at=master


如果可以的话,请发布一个最小可工作示例。 - Anubian Noob
我不确定这是否是您所指的,但这是当前的游戏文件:https://www.dropbox.com/s/nmzfm75atnz5pfi/TinyWorld.jar - Dylan
如果您有一个小例子,请在问题中发布相关代码。 - Anubian Noob
这是我能缩小的最小尺寸了。我不确定代码的哪一部分实际上导致了它,据我所知,它来自Tiled。我不确定问题的根本原因,非常抱歉。 - Dylan
好的,这里可能会出现很多问题,而我对LibGDX的经验不是太多。你似乎已经付出了一些努力,所以我会拿到你的代码并尝试找到问题。 - Anubian Noob
显示剩余3条评论
2个回答

13
这是因为您需要在瓷砖上添加填充。这是一个相当常见的问题,您不是第一个遇到它的人。由于缩放和平移时的舍入误差,有时您将呈现在两个瓷砖之间的区域,这将导致什么也没有被渲染->黑色背景颜色透过来。您需要使用一些工具向您的瓷砖集添加填充。在这个论坛主题中,我解释了如何做到这一点。此外,关于这个主题还有一个stackoverflow的问题在这里

那个论坛现在已经关闭了,这里是一个Web存档链接:https://web.archive.org/web/20160715150127/http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=11078&p=49842 - Rolodophone

1
当您遇到舍入误差时,您可以始终强制数字捕捉您想要的网格。在我的情况下,这看起来像这样:
gameCam.position.x = (float) Math.round(player.b2body.getPosition().x * 100f) / 100f;

因为我在整个游戏中都使用了一个每米像素常量为100f,以便对所有内容进行缩放。

同样的问题。100 让我出了问题,但是 10 就没事:position.x = Math.round(position.x * 10) / 10f; position.y = Math.round(position.y * 10) / 10f; - Ilya Gazman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接