所以当我尝试这样的事情时
batch.draw(animation.getKeyFrame(timeEllapsed, true), 0, 0);
我收到错误,因为draw只接受纹理或纹理区域对象,但animation.getKeyFrame(float,boolean)返回一个Object,并且不能转换为其他任何对象。我正在为一个OOP课程制作一个游戏,但我找不到任何关于LibGdx的现有教程,并且该框架似乎在几年前就已经发生了变化。
谢谢
答案 0 :(得分:1)
这是LibGDX的最新变化,因此教程可能已经过时。
动画现在是通用的,因此它可以支持任何类型的动画帧类型,而不仅仅是TextureRegions。
要将它与TextureRegions一起使用,请声明类型:
public Animation<TextureRegion> myAnimation;
//...
myAnimation = new Animation<TextureRegion>(/*...*/);
答案 1 :(得分:0)
因此,要制作动画,您需要以下以下变量:
注意:您必须在项目中导入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;
}