1

私は非常に基本的な問題だと思います。7 つのスプライトを使用して基本的なアニメーションを実行しようとしています。そのうちの 6 つは Sprite[] 配列にあります。

現在、キーを押すと正しくアニメーション化され、左に移動すると反転しますが、それは後で理解する必要があります. 今のところ、これらのスプライトのサイズを変更したいと思います。

現在、サイズは 32x68 です。これが私のコードです:

jimRect = new Rectangle();

    jimRect.height = 96;
    jimRect.width = 48;
    jimRect.x = 800 / 2 - jimRect.getWidth();
    jimRect.y = 0;

    // Create our assets
    rock = new Texture(Gdx.files.internal("data/img/rock.png"));
    gems = new Texture(Gdx.files.internal("data/img/gems.png"));
    jim0 = new Sprite(new Texture(Gdx.files.internal("data/img/jim0.png")));
    jim1 = new Sprite(new Texture(Gdx.files.internal("data/img/jim1.png")));
    jim2 = new Sprite(new Texture(Gdx.files.internal("data/img/jim2.png")));
    jim3 = new Sprite(new Texture(Gdx.files.internal("data/img/jim3.png")));
    jim4 = new Sprite(new Texture(Gdx.files.internal("data/img/jim4.png")));
    jim5 = new Sprite(new Texture(Gdx.files.internal("data/img/jim5.png")));
    jim6 = new Sprite(new Texture(Gdx.files.internal("data/img/jim6.png")));

    // Create animations
    sprites = new Sprite[] { jim1, jim2, jim3, jim4, jim5, jim6 };
    walkFrames = new Animation(ANIM_DURATION, sprites);
    stateTime = 0;

    for(int i = 0; i < sprites.length - 1; i++){
        sprites[i].setSize(jimRect.getWidth(), jimRect.getHeight());
        System.out.println("Resized " + i + " sprites to " + jimRect.getWidth() + "x" + jimRect.getHeight());
    }
}

基本的には、高さ 96、幅 48 の長方形を作成して Jim を少し大きくします。次に、スプ​​ライトを作成して配列に追加するプロセスを実行します (分割メソッドを使用したテクスチャ領域はより良いですが、それは問題を引き起こし、私を悩ませていました)。

次に、期間とスプライト配列を使用してアニメーションを作成します。

ここで特にこの部分:

    for(int i = 0; i < sprites.length - 1; i++){
    sprites[i].setSize(jimRect.getWidth(), jimRect.getHeight());
    System.out.println("Resized " + i + " sprites to " + jimRect.getWidth() + "x" + jimRect.getHeight());
}

なぜこれが機能しないのですか?ループが開始されていること、配列が適切に反復されていること、長方形の幅/高さが私が設定したものであることを確認できるように、非常に凝ったコンソール プリントも追加しました。

4

1 に答える 1