【发布时间】:2018-01-27 05:53:46
【问题描述】:
从今天开始,我像这样加载我的纹理:
Texture texture = new Texture(path);
Sprite sprite = new Sprite(texture);
batch.draw(sprite.getTexture(), x,y);
就这么简单。
但是现在我有一个小问题,我有很多实体类型,每个都有不同的大小,但是,我有一个等距图,我需要将每个精灵放在图块上(并非所有精灵都更大比瓦片,所以它不是超过 4 个瓦片之类的东西,它们只是比瓦片大一点,需要一些偏移)。
所以基本上我需要一个打包系统,它可以打包一个精灵图像(或一组相同大小的图像)和一个包含在里面的属性,它将有offsetX 和offsetY 所以我可以像这样使用它那:
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);
i 和j 是数组中的平铺位置。
【问题讨论】:
-
为什么不直接获取纹理的大小并计算偏移量呢?我的意思是,你知道瓷砖有多大......不需要成组包装或其他什么。
-
你会怎么做?每个精灵在图像中的位置不同,我的意思是如何让它在图块上看起来完美?
-
哦等等,我想我误解了。你有一个包含所有精灵的纹理?我想你不应该在一个纹理文件中混合不同的精灵大小
-
@HerrDerb 即使它的1个纹理,我的瓦片是等距的,瓦片的宽度和高度不相等。在我的例子中,它的 GameTile.TILE_WIDTH 和 GameTile.TILE_HEIGHT。我已经这样做以获得 X/Y 的绘制位置,请参阅我的编辑