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是数组中的磁贴位置。

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

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

最新更新