如何在LibGDX中使用胺化

如何在LibGDX中使用胺化,libgdx,Libgdx,所以当我尝试这样的事情时 batch.draw(animation.getKeyFrame(timeEllapsed, true), 0, 0); 我得到一个错误,因为draw只接受纹理或纹理区域对象,而animation.getKeyFrame(float,boolean)返回一个对象,并且不能投射到其他任何一个对象。我正在为一个OOP类制作一个游戏,但是我找不到任何关于LibGdx的最新教程,而且这个框架似乎在几年前就已经改变了 谢谢这是LibGDX最近的一次更改,因此教程可能已经过时 动

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

batch.draw(animation.getKeyFrame(timeEllapsed, true), 0, 0);
我得到一个错误,因为draw只接受纹理或纹理区域对象,而animation.getKeyFrame(float,boolean)返回一个对象,并且不能投射到其他任何一个对象。我正在为一个OOP类制作一个游戏,但是我找不到任何关于LibGdx的最新教程,而且这个框架似乎在几年前就已经改变了


谢谢

这是LibGDX最近的一次更改,因此教程可能已经过时

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

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

public Animation<TextureRegion> myAnimation;

//...

myAnimation = new Animation<TextureRegion>(/*...*/);
公共动画myAnimation;
//...
myAnimation=新动画(/*…*/);

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

  • 纹理玻璃
  • 纹理区域
  • int currentFrame=1
  • int maxFrame=2 注意:必须在项目中导入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+=Gdx.graphics.getDeltaTime();
            if(timeFactor>=0.2f){
                currentFrame++;
                if(currentFrame>MAX_FRAME){
                    currentFrame = 1;
                }
                sprite.setRegion(atlas.findRegion(String.format("%04d", currentFrame)));
                timeFactor= 0;
            }