Java 在tilemap上的Libgdx中渲染精灵

Java 在tilemap上的Libgdx中渲染精灵,java,android,libgdx,tile,Java,Android,Libgdx,Tile,我正在尝试在libgdx/android工作室中的平铺贴图上渲染精灵/纹理。请注意,我的贴图是20x25,有8个像素的平铺,而splitTiles是一个纹理区域 public void show() { cam = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); cam.setToOrtho(false, 20, 25); batch = new SpriteBatc

我正在尝试在libgdx/android工作室中的平铺贴图上渲染精灵/纹理。请注意,我的贴图是20x25,有8个像素的平铺,而splitTiles是一个纹理区域

 public void show() {

    cam = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    cam.setToOrtho(false, 20, 25);
    batch = new SpriteBatch();
    map = new TmxMapLoader().load("centipedeMap.tmx");
    renderer = new OrthogonalTiledMapRenderer(map,1/8f)
}

  public void render(float delta) {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    renderer.setView(cam);
    renderer.render();
    player.update();
    ex.update();

    batch.setProjectionMatrix(cam.combined);
    cam.update();

    batch.begin();
    Texture tilesImage = new Texture(Gdx.files.internal("tile.png"));
    TextureRegion[][] splitTiles = TextureRegion.split(tilesImage, 8, 8);
    batch.draw(splitTiles[0][0],50,50);
    batch.end();
}

您的摄影机视口尺寸为20,25,并且您正在以50,50绘制纹理区域,因此您的图像在屏幕外渲染,因此不可见

建议:物体很重,所以尽量避免创建同一纹理的多个实例

您已经看到,摄影机视口的尺寸为20,25,这与tileMap(20,25)尺寸相同,因此摄影机1单位表示tileMap的一个单元


您可以检测与平铺的碰撞,不需要创建矩形对象。

那么问题是什么?很抱歉,我的精灵没有显示在平铺贴图的顶部。平铺贴图正在渲染,但精灵没有。您是否能够绘制简单的纹理区域而不是分割的纹理区域?不要在
render
方法中创建
Texture
对象。谢谢@AbhishekAryan,我在
show
方法中初始化了纹理/纹理区域,它成功了!我不明白的是批次的x和y坐标对应于单元格。例如“batch.draw(图像,2,2,1,1);”将图像放置在单元格2,2所在的位置。目前,我在地图上放置随机平铺,并为碰撞设置矩形,我放置矩形,例如,如果
Cell=(1,1)
,则我将矩形放置在(1*8,1*8)。我应该把矩形放在(1,1)还是(1*8,1*8)。非常感谢,请发布一个我可以接受的答案。如果(layer.getCell(x,y)!=null&&
layer.getCell(x,y).getTile().getProperties().containsKey(“阻塞”)){
做点什么
}
播放器总是被八个单元格包围,检查您的播放器是否会碰撞该单元格。检查该单元格具有什么属性或id,这取决于您的操作。