我正在用Java做一场格斗游戏,我在动画方面遇到了一些麻烦。
当玩家闲置或行走时,我没有问题,因为每个精灵都有固定的宽度(50px),但是当玩家攻击时,精灵会变得更宽,只要打击更进一步。在游戏中,精灵无法正确绘制。
PS:我将每个帧/精灵保存在一个arraylist中,我会根据精灵的数量手动更改MAXFRAMES。
/[ ]|<div><br><\/div>|<span[ ]style='white-space:pre'>[ ]<\/span>|<br>/
是spritesheet。
我正在使用如下的getSubImage方法。
SS
SpriteSheet示例:
任何想法?或者解决方案是暴力加载吗?
答案 0 :(得分:0)
由MadProgrammer提取,您可以手动设置工作表中每个精灵的大小。 由于高度始终相同,因此您可以简单地使用一个数组,其大小与工作表上的精灵数量相同,并且只在其中放入精灵宽度。
为了帮助您,您可以在手动设置如下值之前进行循环:
float cellWidths[MAX_FRAMES/CELLNUMBER];
for(int i=0; i<MAX_FRAMES/CELLNUMBER;i++){
cellWidths[i] = CELLWIDTH;
}
//set non default values manually.
然后你只需要像这样改变你:
for(int i = 1; i < MAXFRAMES; i++) {
subtmp = tmp.getSubimage((cellWidths[i-1] * i) + k - cellWidths[i-1], 1, cellWidths[i-1], CELLHEIGHT);
this.animation_idle_right.add(subtmp);
k++;
}
但我可能误解了MAX_FRAMES的意思。