由于某种原因,以下代码不会更改磁贴的图形,
它将其设置为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));
}
答案 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。