不会开机的男孩

Box2d 03 b2Joint 连接器

| Comments

在真实世界中,一个物体很难孤立的存在,比如一个我们的自行车,2个轮子除了可以自由滚动以外,还必须保证2个轮子之间的距离不变,而保证这个距离不变的就是自行车的大梁。我们的胳膊,需要保证在一定范围的情况下围绕一个点旋转等等。Box2D中 连接器就是用来保证刚体和刚体之间的某种关系而出现的。

我们先认识b2DistanceJoint——距离连接器。

image

这是一个自行车的模型bodyA bodyB 就是之前熟悉的圆形刚体,中间的红线是我们的距离连接,anchorA,anchorB 则是连接器连接2个刚体的位置。非常的直观。

b2DistanceJointDef jointDef;
jointDef.Initialize(ballA, ballB, ballA->GetPosition(), ballB->GetPosition());

b2DistanceJoint *join = (b2DistanceJoint *)world->CreateJoint(&jointDef);
CGFloat distance = 30.0 / PTM_RATIO;
join->SetLength(distance);

非常的直观,制定连接的位置和距离,就创建完毕了。下面是一个demo,每当触摸屏幕的时候给自行车一个向右的冲量。

demo代码

Comments