java - 在 tilemap 上使用 Libgdx 渲染 Sprite

标签 java android libgdx tile

我正在尝试在 libgdx/android studio 中的平铺 map 上渲染 Sprite /纹理。请注意,我的 map 是 20x25,具有 8 个像素的图 block ,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();
}

最佳答案

您的相机视口(viewport)尺寸为 20, 25,并且您在 50,50 处绘制 TextureRegion,因此您的图像呈现在屏幕之外,因此不可见。

推荐:Texture是重物,因此尽量避免创建相同纹理的多个实例。

您的相机视口(viewport)尺寸为 20,25,与 tileMap(20,25) 尺寸相同,因此相机 1 单位表示 TileMap 的一个单元格。

您可以检测与 Tiles 的碰撞,无需创建 Rectangle 对象。

关于java - 在 tilemap 上使用 Libgdx 渲染 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43577382/

相关文章:

java - 在java中改变图像颜色

java - 如何修复 'android.os.NetworkOnMainThreadException' ?

android - 2 Android 中 ListView 中的按钮

java - 无法在android中读取复制的数据库

android - 如何创建一个正交相机来使用 libgdx 正确缩放我的 Sprite /纹理?

json - LibGDX JSON 错误 : JSON standard does not allow identifiers

java - 从 Java 中的两个不同类设置和获取静态变量

java - 从 retrofit 查询中获取 map

java - LibGDX 在触摸持续时间内重复同样的事情?

java - 如何使用 lambda 表达式从 forEach 方法中中断