box2dweb之关节joint(连接器)

简介: 1 概述   前篇基础文章看完后基本上就应该对box2dweb能上手了,下面来介绍一下box2dweb非常重要的一个概念,关节(joint)也有叫连接器的,总之是一个意思。下面是关节详细的类库说明: BOX2D.

1 概述

  前篇基础文章看完后基本上就应该对box2dweb能上手了,下面来介绍一下box2dweb非常重要的一个概念,关节(joint)也有叫连接器的,总之是一个意思。下面是关节详细的类库说明:

BOX2D.Dynamics.Joints>>>动态关节包;
b2DistanceJoint 距离连接
b2DistanceJointDef 距离连接定义.
b2GearJoint 齿轮链接.
b2GearJointDef 齿轮连接定义.
b2Joint 连接基类.
b2JointDef 连接定义基类.
b2JointEdge 用于组合刚体或连接到一起.刚体相当于节点,而连接相当于边
b2MouseJoint 鼠标连接.
b2MouseJointDef 鼠标连接定义.
b2PrismaticJoint 移动连接.
b2PrismaticJointDef 移动连接定义.
b2PulleyJoint 滑轮连接.
b2PulleyJointDef 滑轮连接定义.
b2RevoluteJoint 旋转连接.
b2RevoluteJointDef 旋转连接定义.

当然,创建的时候用连接器定义类,创建出来的时连接器类。下面我们来一一来看。

2.1 距离连接器b2DistanceJoint

  距离连接器就是以固定的距离来连接两个body,这其中就有4个固有概念,两个物体,两个物体上的连接点。

  首先,我们先定义两个body:

 

 1 //定义两个body
 2 var bodydef=new b2BodyDef();
 3       bodydef.type = b2Body.b2_dynamicBody;
 4 var fixDef=new b2FixtureDef(); 
 5       fixDef.sharp=new b2CircleShape(0.2)
 6       fixDef.density = 5.0;
 7       fixDef.friction = 0.4;
 8       fixDef.restitution =0.3;
 9 
10 var body1 = world.CreateBody(bodyDef);
11       body1.SetPosition(new b2Vec2(2,2));
12       body1.CreateFixture(fixDef);
13                    
14 var body2 = world.CreateBody(bodyDef);
15       body2.SetPosition(new b2Vec2(4,3));
16       body2.CreateFixture(fixDef);

 

  然后我们用距离连接器将这两个物体连接起来:

 1 var disjoint=new b2DistanceJointDef();
 2  //设置要连接的两个物体
 3  disjoint.bodyA=body1;
 4  disjoint.bodyB=body2;
 5   //设置连接在两个物体上相对于中心点的位置(如果不设置,默认为中心点)
 6   disjoint.localAnchorA.Set(0.1,0.1);
 7   disjoint.localAnchorB.Set(0,0);
 8   //设置距离,如果不设置则为两物体之间的实际距离,如果设置的距离与实际距离不符,则拉伸至设置的距离
 9   disjoint.length=1;
10   world.CreateJoint(disjoint);

 

下面来看效果

 

  距离连接器还有几个有趣的参数,collideConnected   是否允许关联的两个物体碰撞,默认是不计算的。另外两个参数与关节的弹性相关,频率(frequency)和阻尼率(damping ratio),其中频率指谐振时候的快慢,一般该值要小于时间歩频率(世界刷新频率)的一半,阻尼率是一个0~1之间的数值,值为1时将没有振动。下面我们来加弹性参数:

 

disjoint.frequencyHz = 4;
disjoint.dampingRatio = 0.2;

 

看效果

 

 

      

目录
相关文章
|
3月前
|
数据可视化 JavaScript 前端开发
Cesium案例解析(五)——3DTilesPhotogrammetry摄影测量3DTiles数据
Cesium案例解析(五)——3DTilesPhotogrammetry摄影测量3DTiles数据
125 0
|
3月前
|
算法 JavaScript 前端开发
Web Audio API 第4章 音调与频域
Web Audio API 第4章 音调与频域
|
JSON JavaScript 数据格式
使用IIS发布Cesium 3dtiles模型
如何使用windows IIS发布Cesium 3dtiles模型
620 0
|
开发工具
ZYNQ-Black-Design最小系统搭建实现ZYNQ上面的helloworld
ZYNQ-Black-Design最小系统搭建实现ZYNQ上面的helloworld
198 0
ZYNQ-Black-Design最小系统搭建实现ZYNQ上面的helloworld
SAP Commerce Cloud Spartacus UI footer 区域的设计模型
SAP Commerce Cloud Spartacus UI footer 区域的设计模型
91 0
SAP Commerce Cloud Spartacus UI footer 区域的设计模型
后期材质(PostProcess Material)+ Custom Node 实现"描边"和"马赛克"效果【UE4】
后期材质(PostProcess Material)+ Custom Node 实现"描边"和"马赛克"效果【UE4】
336 0
后期材质(PostProcess Material)+ Custom Node 实现"描边"和"马赛克"效果【UE4】
|
Web App开发 前端开发 API
Web 端的下一代三维图形
本文讲的是Web 端的下一代三维图形,今天,苹果 WebKit 团队提议在 W3C 成立一个新的社区群组(Community Group)来讨论 Web 端三维图形的未来和开发一款支持现代 GPU 特性(包括底层图像处理和通用计算)的标准 API。
1163 0
|
图形学
Unity导航 (寻路系统Nav Mesh Agent)
第一种 简单寻路 地面接触到的。到达目标点不用跳跃能够一直走路到达。 场景视图中简单搭设几个物体。 胶囊体为寻路者,黄球为目标点 红地板,绿色障碍物。 现将地板以及障碍物选中 在检视面板设置静态为Navigation Static 如图2 然后菜单栏选择窗口 Window –Navigation 然后选择All—Bake烘焙如图 有三个页面参数可以调节烘焙效果,参数具体参照圣典解释。
1882 0
|
图形学
Unity组件:Fixed Joint 固定关节
Fixed Joints restricts an object's movement to be dependent upon another object. This is somewhat similar to Parentingbut is implemented through physics rather than Transform hierarchy.
1899 0