Libgdx给出每个纹理图像属性?

时间:2017-08-18 13:55:01

标签: java libgdx

截至今天,我加载了这样的纹理:

Texture texture = new Texture(path);
Sprite sprite = new Sprite(texture);
batch.draw(sprite.getTexture(), x,y);

这很简单。

但是现在我有一点问题,我有很多实体类型,每个都有不同的大小,但是,我有一个等距地图,我需要将每个精灵集中在瓷砖上(并非所有的精灵都更大)而不是瓷砖,所以它不是超过4个瓷砖或东西的东西,它们只比瓷砖大一点,并且需要一些偏移量。)

所以基本上我需要一个包装系统,它可以打包一个精灵图像(或一组相同大小的图像)和一个包含在里面的属性,这些属性将包含offsetXoffsetY所以我可以这样使用:

batch.draw(sprite.getTexture(), x + offsetX, y + offsetY);

LibGDX中有这样的东西吗?

我已经尝试过这样做了:

    int x = (i * GameTile.TILE_WIDTH / 2) - (j * GameTile.TILE_WIDTH / 2) - (texture.getWidth() / 2);
    int y = (i * GameTile.TILE_HEIGHT / 2) + (j * GameTile.TILE_HEIGHT / 2) - (texture.getHeight() / 2);

ij是数组中的磁贴位置。

1 个答案:

答案 0 :(得分:0)

这就是我的工作。选择一个至少与最大精灵一样大的图像大小。以此大小制作所有精灵源图像,根据需要在它们周围放置尽可能多的隐形填充,使它们在此矩形中居中。使用LibGDX TexturePacker的stripWhitespace功能。并保持allowRotation关闭。地图集不会比以前更大,但现在它可以使用偏移数据。

在运行时,获取对AtlasRegions的引用,而不是隐式转换为TextureRegions。 AtlasRegion具有您需要的偏移参数。从中减去源图像大小的一半宽度和高度,并添加到要绘制它的中心点。