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

  • 相关阅读:
    MySQL 5.7 多主一从实现
    从 MySQL 全备的 SQL 文件中抽离出某张表的数据
    KUBERNETES 03:Pod 资源清单
    KUBERNETES 02:基本操作命令
    KUBERNETES 01:说明与安装
    DOCKER 08:搭建本地镜像仓库 Harbor
    DOCKER 07:docker swarm
    DOCKER 06:docker compose
    DOCKER 05:数据持久化
    DOCKER 04:容器资源限制和网络原理
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1712251.html
Copyright © 2011-2022 走看看