Java LibGdx平铺贴图渲染问题

Java LibGdx平铺贴图渲染问题,java,libgdx,tiled,Java,Libgdx,Tiled,我正试图学习一本书来学习LibGDX游戏引擎,但我在渲染平铺贴图时遇到了一个问题。我想我用这本书写了同样的代码,但我不能得到同样的结果 这是一个带有角色和地图的简单游戏。当我渲染我的角色和背景时,没有问题 它看起来像这样 但在我添加tmx地图后,屏幕上只显示游戏的一部分,没有地图。。 我不知道怎么解决这个问题。。我真的很困惑 这些是我的GameManager和ScreenManager类,也许你能找出我做错了什么 public class GameManager { static Tile

我正试图学习一本书来学习LibGDX游戏引擎,但我在渲染平铺贴图时遇到了一个问题。我想我用这本书写了同样的代码,但我不能得到同样的结果

这是一个带有角色和地图的简单游戏。当我渲染我的角色和背景时,没有问题

它看起来像这样

但在我添加tmx地图后,屏幕上只显示游戏的一部分,没有地图。。 我不知道怎么解决这个问题。。我真的很困惑

这些是我的GameManager和ScreenManager类,也许你能找出我做错了什么

public class GameManager {

static TiledMap map;
public static TiledMapRenderer renderer;/////

//region paddle
static TextureRegion leftPaddleTexture;
static TextureRegion rightPaddleTexture;
static Sprite leftPaddleSprite;
static Sprite rightPaddleSprite;
public static final float PADDLE_RESIZE_FACTOR = 700f;
public static final float PADDLE_ALPHA = 0.25f;
public static final float PADDLE_HORIZ_POS_FACTOR = 0.02f;
public static final float PADDLE_VERT_POSITION_FACTOR = 0.01f;
//endregion

static AssetManager assetManager;
static TextureAtlas texturePack;

static Bob bob;

static TextureRegion bobSpriteSheet;

public static Sprite backgroundSprite;
public static Texture backgroundTexture;

public static final float BOB_RESIZE_FACTOR = 400f;

public static void loadAssets()
{
    assetManager.load(GameConstants.backgroundImage, Texture.class);
    assetManager.load(GameConstants.texturePack, TextureAtlas.class);


    assetManager.setLoader(TiledMap.class, new TmxMapLoader(new InternalFileHandleResolver()));


    assetManager.load(GameConstants.level1, TiledMap.class);


    assetManager.finishLoading();
}

public static void initialize(float width, float height)
{



    assetManager = new AssetManager();
    loadAssets();


    map = assetManager.get(GameConstants.level1);
    renderer = new OrthogonalTiledMapRenderer(map, GameConstants.unitScale);

    GameScreen.camera.setToOrtho(false, 35,20);
    GameScreen.camera.update();


    renderer.setView(GameScreen.camera);

    texturePack = assetManager.get(GameConstants.texturePack);

    initializeLeftPaddle(width,height);
    initializeRightPaddle(width, height);

    bob = new Bob();
    bobSpriteSheet = texturePack.findRegion(GameConstants.bobSpriteSheet);
    bob.initialize(width,height,bobSpriteSheet);


    bob.bobSprite = new Sprite(bobSpriteSheet);

    //set the size of the bob
    bob.bobSprite.setSize((walkSheet.getRegionWidth()/ANIMATION_FRAME_SIZE) * (width/BOB_RESIZE_FACTOR),
            walkSheet.getRegionHeight()*(width/BOB_RESIZE_FACTOR));

    bob.bobSprite.setPosition(width / 2f, 0);

    backgroundTexture =assetManager.get(GameConstants.backgroundImage);
    backgroundSprite = new Sprite(backgroundTexture);

    backgroundSprite.setSize(width, height);

}

public static void renderGame(SpriteBatch batch)
{
   backgroundSprite.draw(batch);
    bob.update();
    bob.render(batch);
    leftPaddleSprite.draw(batch);
    rightPaddleSprite.draw(batch);

}

public static void dispose()
{
    assetManager.unload(GameConstants.backgroundImage);
  assetManager.clear();
}

public static void initializeLeftPaddle(float width, float height)
{
    leftPaddleTexture = texturePack.findRegion(GameConstants.leftPaddleImage);
    leftPaddleSprite = new Sprite(leftPaddleTexture);

    leftPaddleSprite.setSize(leftPaddleSprite.getWidth()*width/PADDLE_RESIZE_FACTOR,
            leftPaddleSprite.getHeight()*width/PADDLE_RESIZE_FACTOR);

    leftPaddleSprite.setPosition(width * PADDLE_HORIZ_POS_FACTOR, height * PADDLE_VERT_POSITION_FACTOR);

    leftPaddleSprite.setAlpha(PADDLE_ALPHA);
}

public static void initializeRightPaddle(float width, float height)
{
    rightPaddleTexture = texturePack.findRegion(GameConstants.rightPaddleImage);
    rightPaddleSprite = new Sprite(rightPaddleTexture);

    rightPaddleSprite.setSize(rightPaddleSprite.getWidth()*width/PADDLE_RESIZE_FACTOR,
            rightPaddleSprite.getHeight()*width/PADDLE_RESIZE_FACTOR);

    rightPaddleSprite.setPosition(leftPaddleSprite.getX() + leftPaddleSprite.getWidth() + width * PADDLE_HORIZ_POS_FACTOR,
            height * PADDLE_VERT_POSITION_FACTOR);

    rightPaddleSprite.setAlpha(PADDLE_ALPHA);
}
}

}

我希望你们能帮助我,我在网站上搜索了同样的问题,但我找不到

static TiledMap map;
让我们在GameContents类中定义映射文件的路径:

public static final String level1 = "data/maps/level1.tmx";
要将映射排队以进行加载,请将以下代码行添加到loadAssets()方法 在finishedLoading()方法调用之前的GameManager:

// set the tiled map loader for the assetmanager
assetManager.setLoader(TiledMap.class, new TmxMapLoader(new
InternalFileHandleResolver()));
//load the tiled map
assetManager.load(GameConstants.level1, TiledMap.class);
//blocking method to load all assets
assetManager.finishLoading();
现在,您可以将映射实例加载到initialize()方法中: loadAssets()

要渲染贴图,我们需要一个贴图渲染器。因为我们使用的是正交映射, 贴片包装中的正交贴片机适用于此 目的。在GameManager类中声明其实例:

public static OrthogonalTiledMapRenderer renderer;
// map renderer

如果您的问题在这里没有得到有用的答案,请注意,Stack Exchange网络有一个专门讨论游戏开发相关问题的社区,即游戏开发,您可以在那里找到更多帮助。请参阅:谢谢,我不知道。我看到的与我所做的不同的一件事是,我在渲染调用中设置了平铺贴图渲染器的视图,以便它在每个渲染周期都发生。还有另一个示例,我非常确定它必须在render调用中,因为它使用相机的当前投影矩阵。因此,如果摄影机位置发生变化,则需要确保在平铺贴图渲染器上再次设置摄影机位置。我尝试过,但结果相同。。无论如何,谢谢你。。
// get the map instance loaded
map = assetManager.get(GameConstants.level1);
public static OrthogonalTiledMapRenderer renderer;
// map renderer