所以,當我嘗試這樣的事情如何LibGDX
batch.draw(animation.getKeyFrame(timeEllapsed, true), 0, 0);
我得到一個錯誤,因爲平局只需要一個紋理或紋理區域對象,但animation.getKeyFrame(浮點數,布爾值)返回一個對象,並且不能轉換爲其他任何對象。我正在爲一個OOP類做遊戲,但是我找不到任何關於LibGdx的當前教程,並且這個框架自幾年前似乎已經發生了變化。
謝謝
所以,當我嘗試這樣的事情如何LibGDX
batch.draw(animation.getKeyFrame(timeEllapsed, true), 0, 0);
我得到一個錯誤,因爲平局只需要一個紋理或紋理區域對象,但animation.getKeyFrame(浮點數,布爾值)返回一個對象,並且不能轉換爲其他任何對象。我正在爲一個OOP類做遊戲,但是我找不到任何關於LibGdx的當前教程,並且這個框架自幾年前似乎已經發生了變化。
謝謝
這是LibGDX的最近更改,所以教程可能已過時。
動畫現在是通用的,所以它可以支持任何類型的動畫幀類型,而不僅僅是TextureRegions。
要與TextureRegions使用它,聲明類型:
public Animation<TextureRegion> myAnimation;
//...
myAnimation = new Animation<TextureRegion>(/*...*/);
因此,爲了使動畫,你將需要以下這些變量:
注意:您必須在項目中導入TextureAtlas和png文件。
現在初始化紋理圖集和紋理區域。
atlas = new TextureAtlas(Gdx.files.internal("animation.atlas"));
region = new TextureRegion(atlas.findRegion("0001"));
sprite = new Sprite(region);
sprite.setPosition(100,300);
這是如果你想你的形象channge真正的動畫正在發生
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;
}