有没有一种方法可以使用GraphicsContext旋转单个矩形?

时间:2019-11-26 12:21:25

标签: java rotation game-engine graphicscontext

我有10个不同的实体(矩形),它们具有各自的方向(旋转角度)。我想用自己的角度绘制每个矩形。现在好像整个画布绕着不同的角度旋转,似乎它们相互影响。

在屏幕上,您可以清楚地看到矩形在画布外旋转。

有没有一种方法可以分别旋转每个矩形?

这是我的绘图系统

public class DrawingSystem implements EntitySystem {

    @Inject
    private Engine engine;

    @Inject
    private Canvas canvas;

    @Override
    public void update() {
        var entities = engine.getEntitiesWithComponents(BoundsComponent.class/*, VisualComponent.class*/);

        var gc = canvas.getGraphicsContext2D();

        gc.clearRect(0, 0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight());

        for(var e : entities){
            var bounds = e.get(BoundsComponent.class);

            gc.beginPath();
            gc.setFill(Color.RED);
            gc.fillRect(
                bounds.getX(),
                bounds.getY(),
                bounds.getWidth(),
                bounds.getHeight()
            );
            Rotate r = new Rotate(bounds.getDirection(), bounds.getX() + (int)(bounds.getWidth()/2), bounds.getY() + (int)(bounds.getHeight()/2));
            gc.setTransform(r.getMxx(), r.getMyx(), r.getMxy(), r.getMyy(), r.getTx(), r.getTy());
        }
    }
}

game output screen

0 个答案:

没有答案