0

スプライトを正常に回転させることはできますが、ビットマップが大幅に下に移動し、特に下を向いたときやあらゆる角度から画像の一部が切り取られます。回転が多いビットマップを切り替えています。たとえば、攻撃すると、4 つの攻撃イメージが切り替わります。画像の最後のフレームでは、スプライトの剣が前方に向けられており、スプライトの中心点は、攻撃していない最初のフレームと同じではありません。ビットマップの中心から回転する必要があり、ヒーローがどこにいるかは問題ではないため、これは問題ではないという印象を受けています。または、変換ポイントなどをリセットする必要がありますか。しかし、私が間違っている場合は修正してください。これが私が使用しているコードです。お知らせ下さい。

  public void draw(Canvas canvas, int pointerX, int pointerY) {
        // setBitmap(MainGamePanel.testIcon);
        if (setRotation) {
            canvas.save();
            m.reset();
            // ジョイスティックに基づいて忍者の回転を取得します
            m.setTranslate(spriteWidth / 2, spriteHeight / 2);
            m.postRotate((float) GameControls.getRotation(), spriteWidth / 2,
                    スプライトの高さ / 2);
            // 忍者を回転
            flipedSprite = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
                    bitmap.getHeight(), m, true);
            // 新しいビットマップを回転した忍者に設定
             setBitmap(反転スプライト);
            setRotation = false;
            canvas.restore();
        }

// create the destination rectangle for the ninjas animation pointerX // and pointerY are from the joystick moving the ninja around destRect = new Rect(pointerX, pointerY, pointerX + spriteWidth, pointerY + spriteHeight); canvas.drawBitmap(bitmap, getSourceRect(), destRect, null); }
4

1 に答える 1

0

元の画像を少し大きくして、回転するスペースを増やすことで修正しました。最善の解決策ではありませんが、私にとってはうまくいきます。

于 2011-03-20T07:00:42.227 に答える