如果可以将动画添加到Sprite.draw(SpriteBatch)
方法中。根据多维屏幕中的适当缩放,我使用视口并显示如下纹理:
player= new Sprite(new Texture("player.jpg"));
player.setSize(PLAYER_SIZE,PLAYER_SIZE);
player.setPosition(0,0);
@Override
public void render(SpriteBatch sb) {
sb.setProjectionMatrix(camera.combined);
sb.begin();
player.draw(sb);
sb.end();
}
我希望每当它移动时动画纹理的动画。搜索后我发现只有一种方法可以做到这一点,但需要SpriteBatch.draw(animation.getKeyFrame(elapsed_time),position.x,position.y)
,有没有办法做到这一点?
答案 0 :(得分:0)
简单的答案是libgdx提供的Animation类 https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Animation.html
以下是它的工作原理:
知道尺寸分割了Sprite图,即:
Texture spritemap = newTexture(Gdx.files.internal("images/sprite-map.png"));
TextureRegion[][] spritePosition = TextureRegion.split(spritemap, FRAME_WIDTH, FRAME_HEIGHT);
接下来,要创建带动画的动画类,例如炸弹爆炸,你需要从精灵地图中选择正确的坐标,你的精灵地图是一个二维矩阵。所以要做到这一点你可以举例如:
TextureRegion[] bombSprites = new TextureRegion[4];
bombSprites[0] = spritePosition[5][6];
bombSprites[1] = spritePosition[5][7];
bombSprites[2] = spritePosition[5][8];
bombSprites[3] = spritePosition[5][9];
Animation bombAnimation = new Animation(0.1f, bombSprites);
准备好动画后,您需要创建一个扩展Actor类的类。即:
public class Bomb extends Actor {
... (some fields and methods)
@Override
public void draw(Batch batch, float parentAlpha) {
...
}
您需要覆盖act方法:
@Override
public void act(float delta) {
this.statetime += delta;
}
在重写的draw()方法中使用batch.draw方法来调用
batch.draw(animation.getKeyFrame(this.statetime, true)
这就是简单动画的所有要求
如果您需要竞争示例,请阅读William Mora创建的教程 http://williammora.com/a-running-game-with-libgdx-part-1
如果不清楚,请在评论中写下。