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则会自己绘制出线条。
作者:ywxgod
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。