如何在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=新动画(/*…*/);
因此,要制作动画,您需要以下变量:
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;
}