2017-04-06 9 views
0

Sprite.draw(SpriteBatch)メソッドにアニメーションを追加することができます。私は、ビューポートを使用multidimensial画面で適切なスケーリングによると、このようなテクスチャを表示する:アニメーションをSprite.draw(SpriteBatch)メソッドに追加する

player= new Sprite(new Texture("player.jpg")); 
     player.setSize(PLAYER_SIZE,PLAYER_SIZE); 
     player.setPosition(0,0); 

    @Override 
    public void render(SpriteBatch sb) { 
     sb.setProjectionMatrix(camera.combined); 
     sb.begin(); 
     player.draw(sb); 
     sb.end(); 
    } 

私はそれが移動するたびに私テクスチャの動きをアニメーション化します。検索後、私はこれを行うための1つの方法しか見つけられませんでしたが、必要なのはSpriteBatch.draw(animation.getKeyFrame(elapsed_time),position.x,position.y)です。これを行う方法はありますか?単純な答えは、Animationクラスにここlibgdx https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Animation.html

によって提供され

+0

私はScene2dを探していることをお勧めします。このパッケージには、あなたのゲームにアニメーションを追加するためのすべての種類のものがあります:https://github.com/libgdx/libgdx/wiki/Scene2d –

+0

以下の答えがあなたを助けてくれたら、アップしてください。 – tjago

答えて

0

は、それがどのように動作するかを行く:

  • お気に入りのグラフィックツールを使用してアニメーションフレームとスプライト地図を作成します。寸法はスプライトマップを分割知る
  • 、すなわち:

    Texture spritemap = newTexture(Gdx.files.internal("images/sprite-map.png")); 
    TextureRegion[][] spritePosition = TextureRegion.split(spritemap, FRAME_WIDTH, FRAME_HEIGHT); 
    
  • 次に、アニメーションとアニメーションクラスを作成するためには、例えば、爆弾が爆発のために、あなたはあなたのスプライトマップ、あなたのスプライトマップから右の座標を選ぶ必要があります。 2次元の行列です。だから、例えばあなたができる、それを行うには:

    アニメーションが用意持つ
    TextureRegion[] bombSprites = new TextureRegion[4]; 
    bombSprites[0] = spritePosition[5][6]; 
    bombSprites[1] = spritePosition[5][7]; 
    bombSprites[2] = spritePosition[5][8]; 
    bombSprites[3] = spritePosition[5][9]; 
    Animation bombAnimation = new Animation(0.1f, bombSprites); 
    
  • 、あなたはActorクラスを拡張して作成したクラスを持っている必要があります。すなわち:

    batch.draw(animation.getKeyFrame(this.statetime, true) 
    
を呼び出すために、あなたのオーバーライドされたdraw()メソッドでその使用batch.drawメソッドの後

@Override 
public void act(float delta) { 
    this.statetime += delta; 
} 
  • public class Bomb extends Actor { 
    
    ... (some fields and methods) 
    @Override 
    public void draw(Batch batch, float parentAlpha) { 
        ... 
    } 
    
  • あなたはactメソッドをオーバーライドする必要があります

    単純なアニメーションにはこれがすべて必要です。

    あなたは何かが不明である場合には、ウィリアム・モラ http://williammora.com/a-running-game-with-libgdx-part-1

    によって作成されたチュートリアルを読んでください例を競う必要がある場合は

    コメントでそれを書いてください。

  • 関連する問題