【问题标题】:Add animation into Sprite.draw(SpriteBatch) method在 Sprite.draw(SpriteBatch) 方法中添加动画
【发布时间】:2017-04-06 13:09:28
【问题描述】:

如果可以在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),有没有办法做到这一点?

【问题讨论】:

标签: java android ios animation libgdx


【解决方案1】:

简单的答案是libgdx提供的Animation类 https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Animation.html

它是如何工作的:

  • 使用您最喜欢的图形工具创建带有动画帧的 Sprite Map。
  • 知道分割 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

如果有不清楚的地方请在评论中写出来。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多