【问题标题】:Libgdx tiled gaps between tilesLibgdx 平铺瓷砖之间的间隙
【发布时间】:2015-09-05 19:46:39
【问题描述】:

所以我的平铺地图有问题,我的地图有间隙/纹理渗色,我阅读了有关此问题的其他问题,但我无法找到有效的问题。 我正在使用已经制作好的包含所有图块的精灵表,那么有谁知道它的解决方案吗?我可以制作而且我不需要从精灵表上切割 60 块瓷砖?

【问题讨论】:

    标签: libgdx


    【解决方案1】:

    使用纹理过滤器最近而不是线性,因为线性用户4个周围的纹素来计算实际颜色,所以当它在瓷砖的边界上时会产生间隙。您可以在此处阅读有关 TextureFilter 的信息:

    http://www.badlogicgames.com/wordpress/?p=1403

    你设置它就像:

        Sprite sprite;
    
        //now you are initializing the sprite...
    
        sprite.getTexture().setFilter(TextureFilter.Nearest, TextureFilter.Nearest);
    

    当然,如果您可以访问纹理,您可以直接在纹理上调用 setFilter()。如果您不这样做,因为您从文件创建 tiledMap,您可以尝试迭代切片并为每个切片纹理设置适当的过滤器:

        Iterator<TiledMapTileSet> iter = tiledMap.getTileSets().iterator();
        while(iter.hasNext())
        {
            Iterator<TiledMapTile> iterTile = iter.next().iterator();
    
            while(iterTile.hasNext())
            {
                iterTile.next().getTextureRegion().getTexture().setFilter(...);
            }
        }
    

    您也可以在 TexturePacker 中挤压您的图集 - 它会将边框上的每个像素加倍,因此颜色混合不会影响它

    【讨论】:

    • 但是我不使用地图集,我只有平铺的地图文件和精灵表的png
    • 然后将此 .png 纹理纹理过滤器设置为 Nearest - 我已经编辑了我的答案,添加了如何操作的代码
    • 但是当我设置 sprite_sheet.png 过滤器时我需要做什么?我怎样才能将它设置为平铺?因为我正在使用平铺制作地图。
    • 由于 cmets 中没有代码格式,我再次编辑了答案
    • “迭代瓷砖”没有奏效,仍有差距
    猜你喜欢
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多