我有一个精灵图像的纹理,看起来像这样:libGDX动画效果纹理区域
而且我想制作动画。我有这样的代码设置到每个帧存储到一个变量TextureRegion然后存储所有的帧转换为动画TextureRegion阵列
//AssetLoader class
runTexture = new Texture("kirbyrun.png");
runTexture.setFilter(TextureFilter.Nearest,TextureFilter.Nearest);
//Run Hiro
hiro1 = new TextureRegion(runTexture,0,55,37,55);
hiro1.flip(false,true);
hiro2 = new TextureRegion(runTexture,37,55,44,55);
hiro2.flip(false,true);
hiro3 = new TextureRegion(runTexture,81,55,44,55);
hiro3.flip(false,true);
hiro4 = new TextureRegion(runTexture,129,55,46,55);
hiro4.flip(false,true);
hiro5 = new TextureRegion(runTexture,176,55,41,55);
hiro5.flip(false,true);
hiro6 = new TextureRegion(runTexture,216,55,41,55);
hiro6.flip(false,true);
hiro7 = new TextureRegion(runTexture,257,55,41,55);
hiro7.flip(false,true);
hiro8 = new TextureRegion(runTexture,301,55,42,55);
hiro8.flip(false,true);
TextureRegion[] run = {hiro1,hiro2,hiro3,hiro4,hiro5,hiro6,hiro7,hiro8};
hiroRunAnimation = new Animation<TextureRegion>(0.5f,run);
hiroRunAnimation.setPlayMode(Animation.PlayMode.LOOP);
我当前使用yDown坐标系这就是为什么我翻转图像。
TextureRegion currentFrame = AssetLoader.hiroRunAnimation.getKeyFrame(runTime);
sb.begin();
sb.draw(currentFrame,player.getX(),player.getY(),player.getWidth(),player.getHeight());
sb.end();
这只是块而不是科比的图片打开:
很明显我做错了什么,我米猜测它与我的TextureRegion部分,也许我的X,Y坐标或错误,但我不知道如何解决此问题,因为我使用spritecow.com获取这些坐标。我假设左上角是(0,0),正Y意味着向下移动图像。我怎样才能使柯比实际出现而不是这些盒子?或者更容易将每个帧图像分离成单独的.png文件,只需使用Texture而不是TextureRegion,因此我不需要指定明确的区域。那么我可以使用动画或不会工作?
你的spritesheet上有那些黑盒子吗? – eldo