0
我正在做一个Java游戏,我在动画方面遇到了一些麻烦。当玩家闲置或行走时,我没有问题,因为每个精灵都有一个固定的宽度(50px),但是当玩家攻击精灵时,只要打得更远,精灵就会变得更宽。在游戏中,精灵不能正确绘制。 PS:我将每帧/精灵保存在一个数组列表中,并根据精灵的数量手动更改MAXFRAMES。 SS
是spritesheet。如何从不同精灵尺寸的精灵图表中获取子图像?
我正在使用getSubImage方法如下。
public void setAnimacionIdleRight(BufferedImage ss) {
this.animation_idle_right = new ArrayList<BufferedImage>();
BufferedImage tmp = ss.getSubimage(0, 0, 350, 100);
BufferedImage subtmp = null;
int k = 1;
for(int i = 1; i < MAXFRAMES; i++) {
subtmp = tmp.getSubimage((CELLWIDTH * i) + k - CELLWIDTH, 1, CELLWIDTH, CELLHEIGHT);
this.animation_idle_right.add(subtmp);
k++;
}
}
SpriteSheet例如:
什么想法?或者是解决方案蛮力img加载?
两件事情:1-使每个精灵始终大小完全相同或2-创建某种查询表,它可以告诉你在给定位置的精灵大小 – MadProgrammer
@MadProgrammer是绝对正确的。没有别的办法。我认为第二个建议是最好的,因为您可以节省空间,但创建LUT需要很多开销。如果您使用第一种方法,开发速度会更快。 –
或者3-使用某种类型的图像分析库来分离出子图像矩形,那些保存连续图像的矩形......最多只有一点棘手。 –