• 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则会自己绘制出线条。

  • 相关阅读:
    Nginx出现413 Request Entity Too Large错误解决方法
    Apache设置二级域名和虚拟主机
    LNMP搭建03 -- 编译安装PHP
    LNMP搭建04 -- 配置Nginx支持PHP
    LNMP搭建01 -- 编译安装MySQL 5.6.14 和 LNMP相关的区别
    LNMP搭建02 -- 编译安装Nginx
    vagrant使用小结
    LeetCode Count and Say
    基于ArcGIS Flex API实现动态标绘(1.0)
    HDU 2027 汉字统计
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1712251.html
Copyright © 2020-2023  润新知