我正在为CS课程做一些初步实验,我尝试将 JBox2D 用作物理库并使用 JavaFX 进行绘图。我有一些从屏幕顶部掉落的运气画圈,但现在我有问题做同样的矩形(或任何其他形状)。
我能够绘制和模拟,但我无法弄清楚如何使用Body对象中的值在JavaFX中旋转绘制的节点。
这是我使用JBox2D的机构代码:
@Override
public Body createBody() {
BodyDef bd = new BodyDef();
bd.type = BodyType.DYNAMIC;
bd.position.set(centerX, centerY);
PolygonShape ps = new PolygonShape();
ps.setAsBox(2.0f,4.0f);
FixtureDef fd = new FixtureDef();
fd.shape = ps;
fd.density = 0.9f;
fd.friction = 0.3f;
fd.restitution = 0.5f;
Body b = PhysicalScene.world.createBody(bd);
b.createFixture(fd);
return b;
}
}
这是使用JavaFX中的节点绘制的 - 如下所示:
@Override
public Node create() {
Rectangle r = new Rectangle();
r.setHeight(20);
r.setWidth(40);
r.setStroke(Color.RED);
r.setLayoutX(Physics.toPixelX(centerX));
r.setLayoutY(Physics.toPixelY(centerY));
// THIS IS WHAT I'M MISSING
// r.setRotate(/* some value from Body */);
return r;
}
代码并不漂亮,但我希望你明白这个想法。我可以通过在方法中插入参数来旋转节点,但不知道如何从Body对象本身获取这些值。
我希望你能帮忙,谢谢!