从spritesheet

时间:2015-07-02 09:36:28

标签: algorithm graphics visualization sprite-sheet

有一段时间我试图创建一些基于MonoGame的简单游戏,但我遇到了一个问题。

我在spritedatabase中找到了一些spritesheets,但当前工作表上的一些图片宽度不同/ Example /。我的意思是在第三行/从顶部到底部/,其中运行图像的位置,在第四行上具有与这些不同的宽度。

我头脑中弹出的第一件事就是复制 - 粘贴并调整所有图像的大小,但我百分之百确定有一种更精巧的方法可以做到这一点。

所以问题是:如何在绘制之前获取当前帧的大小?我应该使用一些图像识别算法吗?

1 个答案:

答案 0 :(得分:0)

显然,您提供的精灵表缺少额外的信息,可以让您粘贴它而不会出现问题。首先,您应该知道每个帧的原点,其次是它的尺寸。精灵表中的尺寸可能会有所不同,但在这种情况下,只有正确的原点才能保证精灵始终正确定位。请注意,此类数据库中的精灵表(通常不考虑版权)通常在Photoshop或其他类似软件中手动打包。遗憾的是,这需要一些认真的努力来处理它们。因此,要使用它们,您应该提取所有帧,将它们放在图层中并确保逻辑原点位于同一位置(对于侧卷轴和双足字符,它可以指向英尺之间)。

无论如何,我会手动提取每个精灵。您还可以将segment_image script与ImageMagick一起使用。但可以说,手工工作将会有相同甚至更少的努力。

之后我会将所有提升的画布放大到最大的画面尺寸。将其打包到spritesheet中,导入Piskel并重新定位每个帧以获得正确的原点。最后一个工具坦率地说是不相关的,因为你也可以使用Flash或Photoshop。