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;

 

看效果

 

 

      

目录
相关文章
|
8天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 Control 类
C# Web控件与数据感应之 Control 类
|
11月前
|
Java
Velocity简明教程(1)
Velocity简明教程(1)
143 0
|
JSON JavaScript 数据格式
使用IIS发布Cesium 3dtiles模型
如何使用windows IIS发布Cesium 3dtiles模型
410 0
|
机器人 图形学
Unity Shader Graph 制作Rim Light边缘光效果
Unity Shader Graph 制作Rim Light边缘光效果
310 0
Unity Shader Graph 制作Rim Light边缘光效果
|
Web App开发 前端开发
使用chrome development tool观察box 模型
使用chrome development tool观察box 模型
134 0
使用chrome development tool观察box 模型
|
编译器 API 异构计算
Web 高级着色语言(WHLSL) - 为WebGPU设计的Web图形着色语言
本文介绍了一种新的 Web 图形着色语言:Web 高级着色语言(WHLSL,发音为 “whistle”)。 这种语言受 HLSL 的启发,HLSL 是图形应用开发人员用的主要着色语言。 它扩展了 Web 平台的 HLSL,使其安全可靠。 它易于阅读和编写,使用了正式技术而可以很好地指定。
2116 0
|
前端开发
box2dweb基础
简介   大名鼎鼎的物理引擎box2d基本上大家都听说过,网上有两个javascript版本的box2d库,一个时box2djs,已经停止维护,一个是box2dweb。下面就来介绍一下box2dweb的基本信息。
1088 0
|
图形学
Unity导航 (寻路系统Nav Mesh Agent)
第一种 简单寻路 地面接触到的。到达目标点不用跳跃能够一直走路到达。 场景视图中简单搭设几个物体。 胶囊体为寻路者,黄球为目标点 红地板,绿色障碍物。 现将地板以及障碍物选中 在检视面板设置静态为Navigation Static 如图2 然后菜单栏选择窗口 Window –Navigation 然后选择All—Bake烘焙如图 有三个页面参数可以调节烘焙效果,参数具体参照圣典解释。
1860 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.
1858 0
skyline5:三维skyline fly文件发布网络包并在iis发布
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bitree1/article/details/79240782 1.发布网络包并发布 (1)选择“发布”中的“发布工程为网络包”,如下图所示: (2)在弹出的对话框中输入相应的内容,并点击“确定”,如下图所示:   其中:打包路径:将文件打包到指定的目录中;目标URL:将来要访问的URL路径; (3)点击确定后,将弹出对话框,这时点击“是”,创建文件夹。
1064 0