Libgdx映射闪烁-如何轻松地将边框/填充添加到现有的Tileset

Libgdx映射闪烁-如何轻松地将边框/填充添加到现有的Tileset,libgdx,flicker,tiled,Libgdx,Flicker,Tiled,我对Libgdx和平铺贴图有一些众所周知的问题,当播放器移动时,我的贴图会闪烁(相机跟随播放器) 我已经搜索了答案,发现所有的贴图都是这样做的,为了解决这个问题,你必须用4个填充、2个边框和重复边框(或者在某些工具中使用拉伸边框)来包装精灵。使用libgdx附带的texturepacker,您可以打包图像,只要先拆分图像,然后添加填充/边框。但是,它们被随机放置在平铺集中,使得制作贴图变得更加困难(您需要看到按原始顺序分组的平铺) 我的问题是,我已经尝试了好几天了,但都没有完成。我有一个输入ti

我对Libgdx和平铺贴图有一些众所周知的问题,当播放器移动时,我的贴图会闪烁(相机跟随播放器)

我已经搜索了答案,发现所有的贴图都是这样做的,为了解决这个问题,你必须用4个填充、2个边框和重复边框(或者在某些工具中使用拉伸边框)来包装精灵。使用libgdx附带的texturepacker,您可以打包图像,只要先拆分图像,然后添加填充/边框。但是,它们被随机放置在平铺集中,使得制作贴图变得更加困难(您需要看到按原始顺序分组的平铺)

我的问题是,我已经尝试了好几天了,但都没有完成。我有一个输入tileset,它是32x32px。因此,到目前为止,我尝试的是:

我得到的最接近的结果是:从tileset中解包所有32x32图像,然后使用某种工具再次打包。 第一个问题是,我使用的所有图像解压器(拆分器)都没有对背景应用透明性,而且一些瓷砖集非常详细,这使得它很难正确使用。 第二个问题是,当我想打包时,大多数工具都不提供订单,所以我丢失了tileset配置(这在制作地图时非常重要)

有人能告诉我怎么做而不费那么多力气吗?我真的需要花上几天的时间才能让tileset在Libgdx中看起来好看吗

我只需要将边框/填充添加到瓷砖集,保持其原始位置

我肯定我错过了什么,不可能那么难


谢谢

我的情况也和你一样。 下面是我一步一步做的:

  • 使用将精灵工作表拆分/解压为单个图像。该过程还将对背景应用透明度。你可以使用任何你喜欢的软件,只要它能起作用
  • 第二个问题是,当我想打包时,大多数工具都不提供订单,所以我放松了tileset配置

  • 在重新打包之前,按字母顺序重命名每个图像,这样纹理打包器将按字母顺序对图像进行相应的排序

    例如:walk_1.png、walk_2.png、walk_3.png等等

  • 使用(此版本有GUI版本)重新打包图像。这里的技巧是添加图像的填充,如下所示
  • 这是最重要的一步。现在您已经完成了图像的重新打包。将精灵工作表添加到Tileset中并配置 边距和间距。如果精灵从一开始就没有填充,不要担心。TileMap将对其进行配置。现在它完成了

  • 好的,到目前为止,我发现更简单的方法是为Gimp使用插件

    registry.gimp.org/node/26044

    它允许您添加边框、边沟(在这种情况下,是其他工具的dupplicatePadding或Extrude),也可以删除它

    工作很有魅力,一步到位。 要使用该插件,请将其添加到您的文件夹(在windows、User/gimp/scripts中)或查看文档

    所以在平铺配置中,我使用

    在Gimp插件中,我使用这种配置(菜单->过滤器->精灵表->添加边沟)


    您使用的是连续渲染还是requestRender?这听起来像是你在试图优化每一帧的更新速度,但是没有任何关于你是如何做到这一点的细节。我的建议是准备好渲染所需的一切,然后调用requestRender。我使用的是连续渲染。这不仅仅是优化,还需要将这些边界添加到地图中。我使用TexturePacker和一个可以分割透明背景图像的站点()完成了这项工作。但是要把它做好还有很多工作要做。这是一个可以解释我所说的问题。啊,对。GPU渲染分幅的方式将导致间隙。最后一条评论提到了重复瓷砖周围的像素以进行补偿。如果是单个图像分幅,GL_REPEAT就足够了,但由于单个图像上有许多分幅,因此需要进行一些补偿。您也可以尝试将“float”位置转换为“int”位置,因为这将使tiles位置更加接近。一种解决方案似乎是要么接受要么放弃,但我不会使用GUI版本,因为它已经过时并且存在bug。请参阅:问题是,即使文件按名称排序,Libgdx Packer也会使用一些随机顺序,并且图像文件会被取消排序。对于tilesets,尊重顺序是很重要的,无论是对于地形还是在设计地图时。