如何在 box2d 中使 body 可旋转但不可移动?

How can I make a body rotatable but not movable in box2d?

我需要做一个 body 不能四处移动,就像静态的 body,但我确实需要它可以旋转,有什么办法吗?

创建正常的动态物体和静态物体 - 将它们放在你想要放置可旋转物体的地方并使用 RevoluteJoint 连接它们 - 这是一种你可以想象为 'pin'

BodyDef dynamicBodyDef, staticBodyDef;
//define type, position of bodies...

Body dynamicBody = world.createBody(dynamicBodyDef);
Body staticBody= world.createBody(staticBodyDef);

RevoluteJointDef jointDef = new RevoluteJointDef();
jointDef .bodyA = dynamicBody;
jointDef .bodyB = staticBody;

world.createJoint(jointDef );

您可以定义物体是否可以碰撞,最大角度是多少等 - 看看 RevoluteJointDef class 定义