从 spritesheet 获取帧宽度
Getting frame width from spritesheet
有一段时间我尝试基于 MonoGame 创建一些简单的游戏,但我遇到了一个问题。
我在 spritedatabase, but some of the images on a current sheet were with different width /Example/ 中找到了一些 spritesheet。我的意思是,在第三行/从上到下/,运行 图像所在的位置,与第四行的宽度不同。
我脑海中浮现的第一件事是复制-粘贴所有图像并调整其大小,但我 100% 确定有更巧妙的方法可以做到这一点。
所以问题是:如何在绘制之前获取当前帧的大小?我是否应该使用一些图像识别算法?
显然您提供的 sprite sheet 缺少使您能够轻松粘贴它的额外信息。首先,您需要知道每个框架的来源,其次是它的尺寸。 sprite sheets 中的尺寸可能会有所不同,但在这种情况下,只有正确的原点才能保证 sprite 始终正确定位。请注意,此类数据库中的 sprite sheets(通常会无视版权撕裂)通常在 Photoshop 或其他类似软件中手动打包。不幸的是,这需要一些认真的努力来处理它们。因此,要使用它们,您应该提取所有帧,将它们放在图层中,并确保逻辑原点在同一位置(对于横向卷轴和双足角色,它可能指向脚之间)。
无论如何,我会手动提取每个精灵。您还可以将 segment_image script 与 ImageMagick 一起使用。但可能手动工作将需要相同或什至更少的努力。
之后,我会将 canvas 所有提取的框架放大到最大框架尺寸。将其打包到 spritesheet 中,导入到 Piskel 并重新定位每一帧以使其具有正确的原点。最后一个工具坦率地说是无关紧要的,因为您也可以使用 Flash 或 Photoshop。
有一段时间我尝试基于 MonoGame 创建一些简单的游戏,但我遇到了一个问题。
我在 spritedatabase, but some of the images on a current sheet were with different width /Example/ 中找到了一些 spritesheet。我的意思是,在第三行/从上到下/,运行 图像所在的位置,与第四行的宽度不同。
我脑海中浮现的第一件事是复制-粘贴所有图像并调整其大小,但我 100% 确定有更巧妙的方法可以做到这一点。
所以问题是:如何在绘制之前获取当前帧的大小?我是否应该使用一些图像识别算法?
显然您提供的 sprite sheet 缺少使您能够轻松粘贴它的额外信息。首先,您需要知道每个框架的来源,其次是它的尺寸。 sprite sheets 中的尺寸可能会有所不同,但在这种情况下,只有正确的原点才能保证 sprite 始终正确定位。请注意,此类数据库中的 sprite sheets(通常会无视版权撕裂)通常在 Photoshop 或其他类似软件中手动打包。不幸的是,这需要一些认真的努力来处理它们。因此,要使用它们,您应该提取所有帧,将它们放在图层中,并确保逻辑原点在同一位置(对于横向卷轴和双足角色,它可能指向脚之间)。
无论如何,我会手动提取每个精灵。您还可以将 segment_image script 与 ImageMagick 一起使用。但可能手动工作将需要相同或什至更少的努力。
之后,我会将 canvas 所有提取的框架放大到最大框架尺寸。将其打包到 spritesheet 中,导入到 Piskel 并重新定位每一帧以使其具有正确的原点。最后一个工具坦率地说是无关紧要的,因为您也可以使用 Flash 或 Photoshop。