2

私はJava Slick StateBaeedGameを使用していて、衝突のために長方形を回転させたいと思っています.GraphicsまたはGraphics2Dオブジェクトを使用して視覚的な目的でこれを行うことができることはわかっていますが、長方形自体は変更されません.変数で最初にリストされた長方形グラフィックメソッドで呼び出されると、回転しません。物事をより明確にするために、いくつかのコードを次に示します。

    java.awt.geom.Rectangle2D.Float rectTwo = new Rectangle2D.Float(460 + buckyPositionX, 50 + buckyPositionY, 100, 100);

public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{
      worldMap.draw(buckyPositionX,buckyPositionY); //draw the map at 0,0 to start
      bucky.draw(shiftX,shiftY); //draw bucky at 320, 160 (center of the screen)


    g.rotate(460 + buckyPositionX, 50 + buckyPositionY, 40);
    g.fillRect((float)rectTwo.getX(), (float)rectTwo.getY(), (float)rectTwo.getWidth(), (float)rectTwo.getHeight());
      }

四角形 rectTwo は、GUI をロードすると回転として表示されますが、実際には回転しません。衝突をテストすると、四角形は 0 度のままです。

では、長方形変数を取得して角度を変更するにはどうすればよいでしょうか?

4

1 に答える 1

1

通常、できません。

あなたができることは、形状のパスを変換することです...

PathIterator pathIterator = shape.getPathIterator(AffineTransform.getRotateInstance(Math.toRadians(33.5)));

これは今のところあまり役に立ちませんが、 a を使用しPath2D#appendてパスをオブジェクトに追加することができShapeます...

GeneralPath path = new GeneralPath();
path.append(pathIterator, true);

これで塗装できるようになりますか...

((Graphics2D)g).fill(path);

もちろん、これはGraphicsコンテキストがGraphics2Dインスタンスであることを前提としています。

これは、 への直接参照を維持することはできず、代わりRectange2Dに使用する必要があることも意味しますShape

于 2013-01-15T00:00:00.317 に答える