在libgdx中使用动画精灵获得双打

在libgdx中使用动画精灵获得双打,libgdx,Libgdx,我正在用libgdx制作一个简单的小游戏来学习基本知识。我试着制作一个动画角色。但有一个问题,4帧中的第一帧显示得很好,但第二帧显示,第三帧在其旁边渲染。与第三帧相同,它渲染它旁边的最后一帧。不过,第一帧和最后一帧旁边没有“Double” 字符帧=C1 C2 C3 C4 第1帧-C1 第二帧-C2 C3 第三帧-C3 C4 第四帧(最后)-C4 至于守则: ...... walk = new Animation(0.0015f, assets.leftframes); ....... state

我正在用libgdx制作一个简单的小游戏来学习基本知识。我试着制作一个动画角色。但有一个问题,4帧中的第一帧显示得很好,但第二帧显示,第三帧在其旁边渲染。与第三帧相同,它渲染它旁边的最后一帧。不过,第一帧和最后一帧旁边没有“Double”

字符帧=C1 C2 C3 C4

第1帧-C1

第二帧-C2 C3

第三帧-C3 C4

第四帧(最后)-C4

至于守则:

......
walk = new Animation(0.0015f, assets.leftframes);
.......
statetime += Gdx.graphics.getDeltaTime();                      
currentframe = walk.getKeyFrame(statetime, true);      
batcher.draw(currentframe, character.x, character.y);
.......
为了减少混乱,我省略了其余的代码,但如有必要,我可以展示它

有人知道问题出在哪里吗

提前谢谢

编辑:糟糕的绘画技巧,但以下是渲染的每个帧的图片:


看来第二帧和第三帧的宽度是它们应该的两倍。 选中创建动画时,所有关键帧必须具有相同的宽度。 如果帧间时间太快,请尝试0.2F

编辑(因为您的评论):


这就是问题所在,每一个新的帧都有更大的宽度

替换此项:

leftframes[x] = new TextureRegion(left, x * 32, 0, (x+1) * 32, 48);
为此:

leftframes[x] = new TextureRegion(left, x * 32, 0, 32, 48);

我创建了4个不同的区域,它们具有类似循环的leftframes[x]=新纹理区域(左,x*32,0,(x+1)*32,48);所以我不确定它怎么会有两倍的尺寸。如果是这样的话,为什么第一个不也有呢?这就是问题所在,每一个新的帧都有更大的宽度。替换此:leftframes[x]=新纹理区域(左,x*32,0,(x+1)*32,48);使用此选项:leftframes[x]=新纹理区域(左,x*32,0,32,48);哦,哇。谢谢,我认为第三个参数是它需要的实际像素。它工作得很好:D再次感谢。