我认为我是一个非常基本的问题。我正在尝试使用7个精灵来制作基本动画,其中6个位于Sprite []数组中。
现在,当我按下按键时,除了使鼠标左移时翻转外,现在它可以使动画正确显示,这是我以后需要解决的问题。现在,我想调整这些精灵的大小。
目前尺寸为32x68。这是我的代码:
jimRect = new Rectangle();
jimRect.height = 96;
jimRect.width = 48;
jimRect.x = 800 / 2 - jimRect.getWidth();
jimRect.y = 0;
// Create our assets
rock = new Texture(Gdx.files.internal("data/img/rock.png"));
gems = new Texture(Gdx.files.internal("data/img/gems.png"));
jim0 = new Sprite(new Texture(Gdx.files.internal("data/img/jim0.png")));
jim1 = new Sprite(new Texture(Gdx.files.internal("data/img/jim1.png")));
jim2 = new Sprite(new Texture(Gdx.files.internal("data/img/jim2.png")));
jim3 = new Sprite(new Texture(Gdx.files.internal("data/img/jim3.png")));
jim4 = new Sprite(new Texture(Gdx.files.internal("data/img/jim4.png")));
jim5 = new Sprite(new Texture(Gdx.files.internal("data/img/jim5.png")));
jim6 = new Sprite(new Texture(Gdx.files.internal("data/img/jim6.png")));
// Create animations
sprites = new Sprite[] { jim1, jim2, jim3, jim4, jim5, jim6 };
walkFrames = new Animation(ANIM_DURATION, sprites);
stateTime = 0;
for(int i = 0; i < sprites.length - 1; i++){
sprites[i].setSize(jimRect.getWidth(), jimRect.getHeight());
System.out.println("Resized " + i + " sprites to " + jimRect.getWidth() + "x" + jimRect.getHeight());
}
}
因此,基本上,我创建了一个高度为96且宽度为48的矩形,以使Jim变大一点,然后经历创建精灵的过程,然后将它们添加到数组中(我知道,使用split方法将纹理区域会更好,但这会引起问题并使我烦恼。
然后,我使用duration和sprites数组创建动画。
现在,这里特别是这部分:
for(int i = 0; i < sprites.length - 1; i++){
sprites[i].setSize(jimRect.getWidth(), jimRect.getHeight());
System.out.println("Resized " + i + " sprites to " + jimRect.getWidth() + "x" + jimRect.getHeight());
}
为什么这不起作用?我什至添加了超级精美的控制台打印,因此我可以告诉循环正在启动,数组正在正确地迭代,矩形的宽度/高度就是我所说的样子。
最佳答案
如果像this那样绘制精灵:
sprite.setRegion(currentFrame);
sprite.draw();
然后您的代码应该工作了。但是,只有一件事:
for(int i = 0; i < sprites.length - 1; i++){
应该这样做:
for(int i = 0; i < sprites.length; i++){
您缺少那里的最后一个精灵。
如果您像this这样操作:
batch.draw(currentFrame, x, y, width, height);
然后,确实可以在该方法内设置高度和宽度。