如何更改TiledMapLayer的单元格?

时间:2016-10-13 14:47:38

标签: java libgdx

由于某种原因,以下代码不会更改磁贴的图形, 它将其设置为null

知道为什么会这样吗?

public class Coin extends InteractiveTileObject {
    private final int COPPER_COIN = 4; 

    private static TiledMapTileSet tileSet;

    public Coin(World world, TiledMap map, Rectangle bounds) {
        super(world, map, bounds);
        tileSet = map.getTileSets().getTileSet("items");
        fixture.setUserData(this);
        setCategoryFilter(Constants.COIN_BIT);
    }

    @Override
    public void onHeadHit() {
        getCell().setTile(tileSet.getTile(4));
    }
}

这是我的getCell()方法:

public TiledMapTileLayer.Cell getCell(){
    TiledMapTileLayer layer = (TiledMapTileLayer)map.getLayers().get(1);
    return layer.getCell((int)(body.getPosition().x * Constants.PPM / 128),
        (int)(body.getPosition().y * Constants.PPM / 128));
}

1 个答案:

答案 0 :(得分:0)

除非tileset" items"是Tiled中定义的第一个tileset,当你做

时,你不会得到你期望的牌
tileSet.getTile(4)

其他tilesets中的tile的索引在previus tileset中的索引之后继续。因此,如果您在第一个tileset中有90个tile,那么我们可以调用#34; tiles"然后是你在tileset中的第一个瓷砖" items"将是91。

这意味着你必须这样做:

getCell().setTile(tileSet.getTile(94)); 

如果您查看Tiled中的图块,您仍然会被告知图块ID以0开头。但这不是您使用.getTile()

调用它时所需的ID。