首页 > 解决方案 > 旋转 2D 矩形以进行命中检测

问题描述

我正在寻找将矩形旋转特定角度,因为我有一个使用 java fx 的游戏,它让彗星以一定角度移动。如果火箭与那颗彗星相交,游戏就结束了。然而,对角彗星拥有一个 0 度的矩形,它覆盖了不必要的空间。我尝试使用以下代码,但矩形仍然是 0 度:

public void isRocketHit(){
    Rectangle2D rocketrec = new Rectangle2D(rocket.getX(), rocket.getY(), rocket.getImage().getWidth(), rocket.getImage().getHeight());
    for(Streak i : rstreaks){

        double width = i.getImage().getWidth();
        double height = i.getImage().getHeight();
        Rectangle2D cometrec = new Rectangle2D(i.gmarkX(), i.gmarkY(), width, height);
        double rotationCenterX = (i.gmarkX() + width)/2;
        double rotationCenterY = (i.gmarkY() + height)/2;

        gc.save();
        gc.translate(rotationCenterX, rotationCenterY);
        gc.rotate(i.getAngle());
        gc.translate(-rotationCenterX, -rotationCenterY);
        gc.fillRect(i.gmarkX(), i.gmarkY(), width, height);
        gc.setFill(Color.AZURE);

        if(rocketrec.intersects(cometrec)){
            play = false;
            System.out.println("HIT");
        }

        gc.restore();
    }
}

标签: javajavafxgame-physics

解决方案


推荐阅读