如何在LibGDX中使用Amination

时间:2017-05-03 00:53:43

标签: libgdx

所以当我尝试这样的事情时

batch.draw(animation.getKeyFrame(timeEllapsed, true), 0, 0);

我收到错误,因为draw只接受纹理或纹理区域对象,但animation.getKeyFrame(float,boolean)返回一个Object,并且不能转换为其他任何对象。我正在为一个OOP课程制作一个游戏,但我找不到任何关于LibGdx的现有教程,并且该框架似乎在几年前就已经发生了变化。

谢谢

2 个答案:

答案 0 :(得分:1)

这是LibGDX的最新变化,因此教程可能已经过时。

动画现在是通用的,因此它可以支持任何类型的动画帧类型,而不仅仅是TextureRegions。

要将它与TextureRegions一起使用,请声明类型:

public Animation<TextureRegion> myAnimation;

//...

myAnimation = new Animation<TextureRegion>(/*...*/);

答案 1 :(得分:0)

因此,要制作动画,您需要以下以下变量:

  1. TextureAtlas
  2. TextureRegion
  3. int currentFrame = 1;
  4. int maxFrame = 2;
  5. 注意:您必须在项目中导入TextureAtlas和png文件。

    现在初始化纹理图集和纹理区域。

        atlas = new TextureAtlas(Gdx.files.internal("animation.atlas"));
        region = new TextureRegion(atlas.findRegion("0001"));
        sprite = new Sprite(region);
        sprite.setPosition(100,300);
    

    更改图像,从而制作动画

    这是发生真实动画的部分

            currentFrame++;
            if(currentFrame>MAX_FRAME){
                currentFrame = 1;
            }
            sprite.setRegion(atlas.findRegion(String.format("%04d", currentFrame)));
    

    如果你想让你的图像变形,比如说每0.2秒,你也可以这样做:

    创建一个变量timeFactor;

            timeFactor+=Gdx.graphics.getDeltaTime();
            if(timeFactor>=0.2f){
                currentFrame++;
                if(currentFrame>MAX_FRAME){
                    currentFrame = 1;
                }
                sprite.setRegion(atlas.findRegion(String.format("%04d", currentFrame)));
                timeFactor= 0;
            }