zoukankan      html  css  js  c++  java
  • 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则会自己绘制出线条。

  • 相关阅读:
    UVA 10618 Tango Tango Insurrection
    UVA 10118 Free Candies
    HDU 1024 Max Sum Plus Plus
    POJ 1984 Navigation Nightmare
    CODEVS 3546 矩阵链乘法
    UVA 1625 Color Length
    UVA 1347 Tour
    UVA 437 The Tower of Babylon
    UVA 1622 Robot
    UVA127-"Accordian" Patience(模拟)
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1712251.html
Copyright © 2011-2022 走看看