1

サイズを変更するいくつかのスプライト (まあ、実装するカスタム クラスSpriteなど) があります。AndEngine は画像のサイズを中央から変更します。これにより、0,0 に配置された画像が 0,0 に表示されなくなります。これを修正するために適用しました

    sprite.setScaleCenterX(0);
    sprite.setScaleCenterY(0);

これにより、必要な場所に画像が配置されます。ただし、画像を回転させると、画像が移動します (画像が単純な正方形の場合、回転しても目に見える変化はありません)。これを修正するために適用しました

    sprite.setRotationCenterX((sprite.getWidth() * sprite.getScaleX()) / 2);
    sprite.setRotationCenterY((sprite.getHeight() * sprite.getScaleY()) / 2);

(何らかの理由で、 a のサイズを変更しSpriteてもスプライトの寸法は変更されず、ビジュアル イメージのみが変更されるため、スケールを掛けます)。ただし、これは問題を解決するものではなく、反転したときに画像が移動する場所が変わっただけです。

私の数学はここで外れていますか?画像が位置を動かさないように、これは画像の回転を中心にしないでしょうか? それとも、私が見逃しているものがありますか?

以下は完全なコードです。

    Sprite sprite = new Sprite(0, 0, singleTrackTR, getVertexBufferObjectManager());
    sprite.setScale(scaleX, scaleY);
    sprite.setScaleCenterX(0);
    sprite.setScaleCenterY(0);
    sprite.setRotationCenterX((sprite.getWidth() * sprite.getScaleX()) / 2);
    sprite.setRotationCenterY((sprite.getHeight() * sprite.getScaleY()) / 2);
4

1 に答える 1

0

あなたのコードはすべて正しいです。setProperty(x, y) と setPropertyX/Y(a) の両方のバージョンを自分で試しました。

ひょっとして、ボディに接続していませんか?Body も Sprite の setScale でスケーリングしないことに注意してください。独自の setTransform メソッドがあり、x と y (どちらも PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT で除算する必要があります) と回転値を取ります。

于 2013-02-01T07:10:01.870 に答える