b2Body* foundation =[self createStaticBodyAtLocation:CGPointMake(15, 15) withSize:CGSizeMake(35, 35)];
b2Body* beam=[self createDynamicBodyAtLocation:CGPointMake(105, 35) withSize:CGSizeMake(150, 10)];
b2RevoluteJointDef revoluteJointDef;
revoluteJointDef.Initialize(foundation, beam, b2Vec2(30.0/PTM_RATIO,30.0/PTM_RATIO));
_world->CreateJoint(&revoluteJointDef);
上面的代码创建了一个静态体和一个动态体,然后用一个 revolutejoint 将它们连接起来。这是我得到的:
然后我添加以下几行来添加另一个主体,这是一个静态圆圈,然后将圆圈和之前添加的栏连接到栏的另一端。
b2Body *jointBall=[self createCircleAtLocation:CGPointMake(160, 135)];
revoluteJointDef.Initialize(jointBall, beam, b2Vec2(100.0/PTM_RATIO,10.0/PTM_RATIO));
_world->CreateJoint(&revoluteJointDef);
但这是我得到的:
添加圆圈后,我无法移动栏。它是固定的。但我希望它加入这个圈子。我试图将锚点更改为不同的位置,但没有帮助。我错过了什么?也许不可能将一个动态物体连接到多个静态物体上。