アニメーションキーフレームによって引き起こされるゼロ例外による除算(LIBGDX)

thesameritan:

基本的に、私は、アニメーションオブジェクトに使用する)(TextureAtlasを使用して私のゲームの画面のいずれかでアニメーションを実装し、.findRegionsを使用してみました。

私は、それぞれのインデックスにファイル名を変更する(だけでなく、.packフォルダを更新する)しようとしました

Sample Pack Folder:

sunglasses_1.png
format: RGBA8888
filter: Nearest,Nearest
repeat: none
tile000
  rotate: false
  xy: 1, 1
  size: 600, 600
  orig: 600, 600
  offset: 0, 0
  index: -1
...and so on until sunglasses_35.png

私もここでSAOで同じ問題について読んだ:テクスチャアトラスから作成されたスプライトの配列をアニメーション化 -しかし、それは助けにはなりませんでした。私はまた、アニメーションとTextureRegionsに関する情報を含むGitHubのページを読みました。

ここでは、アニメーションを実装するために使用されたコードの行は、

アニメーションの設定

//animation setup with batch
        batch = new SpriteBatch();
        animationAtlas = new TextureAtlas(Gdx.files.internal("sunglasses.pack"));
        animation = new Animation<>(0.13f, animationAtlas.findRegions("sunglasses"), Animation.PlayMode.LOOP);

Screenクラスからレンダリング()関数で呼び出さアニメーション

  @Override
    public void render(float delta) {
        float elapsedTime = 0f;
        elapsedTime += Gdx.graphics.getDeltaTime();

        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.draw();

        batch.begin();
        batch.draw(animation.getKeyFrame(elapsedTime), 100, 100);
        batch.end();
    }

エラー

Exception in thread "LWJGL Application" java.lang.ArithmeticException: / by zero
    at com.badlogic.gdx.graphics.g2d.Animation.getKeyFrameIndex(Animation.java:138)
    at com.badlogic.gdx.graphics.g2d.Animation.getKeyFrame(Animation.java:122)
    at com.tantei.game.Screens.MainMenu.render(MainMenu.java:104)
    at com.badlogic.gdx.Game.render(Game.java:46)
    at com.tantei.game.Game.render(Game.java:21)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)

すべてのヘルプは大歓迎です!

[編集] animation.getKeyFrames()したがって例外- 0のサイズを返します。それに要素がない、なぜ私はまだ得ることはありません

Tenfour04:

あなたのアトラスは、あなたが呼び出すときに、アニメーション用に正しく作成されていないanimationAtlas.findRegions、それは空の配列を返すです。あなたが呼び出すとanimation.getKeyFrame()、それはアニメーションのゼロフレーム、したがって例外で割るれます。

以下のためにanimationAtlas.findRegions("sunglasses")仕事に、パックファイルであなたの領域がそれぞれ必要とまったく同じ名前(サングラス)、ないtile000、tile001、tile003、などそして、彼らはそれぞれが異なっている必要がありますindexそれらの下を、すべて持っていないindexのを-1。

手動でテクスチャアトラスを作成しようとすると、単に自分を罰しています。使用TexturePacker。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=192158&siteId=1