Distance Joint(固定距离胶链)

在前面的例子中有过拖动物体,其实那是利用了box2d中的Mouse Joint(鼠标胶链)来实现的,具体参看《自定义刚体与拖动》一篇。现在说说距离胶链。

创建距离胶链,需先实例一个距离胶链定义,即b2DistanceJointDef的实例。

b2DistanceJointDef有如下实例属性和方法:

body1:胶链一端的刚体。

body2:胶链另一端得刚体。

collideConnected:一个布尔值,设为true,则胶链两端的刚体碰撞被检测,设为false,则不检测。

Initialize(方法):此方法有四个参数,分别为:body1-表示第一个刚体;body2-表示第二个刚体;anchor1-表示第一个刚体的初始位置;anchor2-表示第二个刚体的初始位置。

下面是创建距离胶链的部分代码:

var body1:b2Body = _rectActors[i - 1].body;
var body2:b2Body = _rectActors[i].body;
var vec1:b2Vec2 = body1.GetPosition();
var vec2:b2Vec2 = body2.GetPosition();
var distanceJointDef:b2DistanceJointDef = new b2DistanceJointDef();
distanceJointDef.Initialize(body1, body2, vec1, vec2);
distanceJointDef.collideConnected = true;
var distanceJoint:b2DistanceJoint = _world.CreateJoint(distanceJointDef) as b2DistanceJoint;

box2d胶链上本身并没有白线连接的,白线是我自己画上去的,用一个循环就可以完成。如果你用box2d的world设置debug模式,并设置b2DebugDraw实例的m_drawFlags属性为b2DebugDraw.e_jointBit,box2d则会自己绘制出线条。

原文地址:https://www.cnblogs.com/ywxgod/p/1712251.html