2017-05-03 34 views
1
使用氨化

所以,當我嘗試這樣的事情如何LibGDX

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

我得到一個錯誤,因爲平局只需要一個紋理或紋理區域對象,但animation.getKeyFrame(浮點數,布爾值)返回一個對象,並且不能轉換爲其他任何對象。我正在爲一個OOP類做遊戲,但是我找不到任何關於LibGdx的當前教程,並且這個框架自幾年前似乎已經發生了變化。

謝謝

回答

1

這是LibGDX的最近更改,所以教程可能已過時。

動畫現在是通用的,所以它可以支持任何類型的動畫幀類型,而不僅僅是TextureRegions。

要與TextureRegions使用它,聲明類型:

public Animation<TextureRegion> myAnimation; 

//... 

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

因此,爲了使動畫,你將需要以下這些變量:

  1. TextureAtlas
  2. TextureRegion
  3. INT currentFrame = 1;
  4. 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); 

改變形象,因此動畫

這是如果你想你的形象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; 
     }