Java 渲染中的Libgdx TiledMap错误

Java 渲染中的Libgdx TiledMap错误,java,libgdx,Java,Libgdx,我用libgdx库做了一个类似马里奥的游戏 一切都很好,但有时(特别是当相机速度快时),我的TileMap在渲染过程中有一个小错误 一幅千言万语的图画,就是这样: 我尝试增加FPS,但没有改变。我不知道那是从哪里来的 这是我的密码: public void show(){ TmxMapLoader loader=新的TmxMapLoader(); this.plan=loader.load(“映射/级别-”+this.world+“-”+this.level+”.tmx”); this.rend

我用libgdx库做了一个类似马里奥的游戏

一切都很好,但有时(特别是当相机速度快时),我的TileMap在渲染过程中有一个小错误

一幅千言万语的图画,就是这样:

我尝试增加FPS,但没有改变。我不知道那是从哪里来的

这是我的密码:

public void show(){
TmxMapLoader loader=新的TmxMapLoader();
this.plan=loader.load(“映射/级别-”+this.world+“-”+this.level+”.tmx”);
this.renderer=新的正交平铺贴图渲染器(this.plan);
...
公共无效渲染(浮动增量){
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
this.renderer.render();//rendu de la carte
Batch Batch=this.renderer.getSpriteBatch();
...

我认为这是关于过滤的。 这将有助于:


如果您所指的问题是,导入tileset时可以修复的间距,如Tenfour04所示


添加或更改像素填充。

当相机位置与屏幕空间坐标(像素)不完全对齐时,会发生这种情况。 这会导致一些精灵被舍入到下一个像素,而另一些精灵(连接到这些精灵)被舍入到上一个像素,从而导致可见的丑陋故障

我能想到的最简单的修复方法是确保相机位置始终与屏幕空间坐标完全对齐

public class TileMapCamera extends OrthographicCamera {

    // Map tile size to round to
    private int tileSize;

    /**
     * Create a pixel-perfect camera for a map with the specified tile size
     * @param tileSize
     */
     public TileMapCamera(int tileSize){
        this.tileSize = tileSize;
     }

     @Override
     public void update(){
         // Round position to avoid glitches
         float prevx = position.x;
         float prevy = position.y;
         position.x = (int)(position.x * tileSize) / (float)tileSize;
         position.y = (int)(position.y * tileSize) / (float)tileSize;
         super.update();
         position.set(prevx, prevy, 0);
    }
}
这适用于基于平铺的坐标视口:

mapViewport = new FitViewport(16, 15, new TileMapCamera(map.getProperties().get("tilewidth", Integer.class)));

如果使用基于像素的坐标视口,则应将摄影机位置取整为最接近的整数。

能否提供有关摄影机功能的详细信息?方法管理、调整大小、创建摄影机等。因为我认为这不是spritebatch的问题,更像是取整错误cau被错误的正交摄影机设置所覆盖。请确保地图集中的瓷砖周围有填充物。