怎样在CocosCreator中使用物理引擎关节

CocosCreator版本2.4.2

mousejoint鼠标关节

cocos文档定义:

鼠标关节用于使刚体上的一个点追踪一个指定的世界坐标系下的位置。 鼠标关节可以指定一个最大的里来施加一个柔和的约束。

鼠标关节会自动使用 mouse region 节点来注册鼠标事件,并且在触摸移动事件中移动选中的刚体。

注意:一般鼠标关节只在测试环境中使用

说明:

任意cc.Node上添加鼠标关节,设置mouseRegion为Canvas,弹力和阻尼都为1

Mouse Region:鼠标注册节点

Frequency:弹力,表示拉扯物体的力度,值越大,弹力越大。就像一个橡皮筋绑在球上,你拉橡皮筋,力越大,球动得越快。

DampingRatio:阻尼,表示拉扯物体后,物体受到的阻力。好比1是在空气中用橡皮筋拉球,10就是在水里面用橡皮筋拉球,阻尼越大,球动的越慢。

distanceJoint距离关节

cocos文档定义:

距离关节通过一个固定的长度来约束关节链接的两个刚体。你可以将它想象成一个无质量,坚固的木棍。

说明:

两个刚体只能绕着各自的节点旋转,两个节点间的距离保持不变。

ConnectedBody:关节另一端的刚体。

Anchor:关节所在刚体锚点

ConnectedAnchor:关节另一端刚体锚点

CollideConnected:关节两端的刚体是否发生碰撞

Distance:距离,200像素

Frequency:弹力。如果设置为10,两个刚体之间会有弹力,像两个物体里有个弹簧连着。 如果设置为0,表示始终保持200像素距离不会变,就像木根连着。

DampingRatio:阻尼

关节需要连接着2个刚体,图中的两个圆点和虚线,表示刚体的锚点和关节连接线。

distance为200,两个刚体始终保持200的距离。且只能在各自的节点上旋转。

应用:

距离固定,两端节点可以旋转,关节可以设置弹性

1. 一端固定,可以做成大摆锤

2. 一端固定,设置弹性,有弹性的大摆锤

motorjoint马达关节

cocos文档定义:

马达关节被用来控制两个刚体间的相对运动。 一个典型的例子是用来控制一个动态刚体相对于地面的运动。

说明:

马达关节是限制两个刚体,使两个刚体的相对位置和角度保持一致。当BodyA的位置和角度变化时,BodyB会用MaxForce和MaxTorque的力向着BodyA的位置和角度移动。

Connected Body:关节另一端刚体

CollideConnected:关节两端刚体是否碰撞

LinearOffset:另一端刚体相对于起始刚体的位置偏移量。也就是BodyB的目标位置。

AngularOffset:另一端刚体相对于起始刚体的角度偏移量。也就是BodyB的目标角度。

MaxForce:可应用于刚体的最大力值。

Max Torque:可应用于刚体的最大扭矩力。

CorrectionFactor:位置矫正系数,范围[0,1]。默认0.3。BodyB向着BodyA移动的缓动因子。值越大,缓动越快。

linear offset为200,表示两个刚体位置偏移为200,一旦偏离了这个限制,两个刚体会用max force 300的力移动到相距200的位置。

angularoffset为0,角度偏移为0,一旦偏离了这个限制,两个刚体会用maxtorque 100的力,使两个刚体角度保持偏移为0。

应用

使用力和扭矩力,使两个刚体保持位置和角度一致

1. 一端固定,可以做成不倒翁、放置在地面的拳击沙袋

prismaticJoint位移关节

cocos文档定义:

移动关节指定了只能在一个方向上移动刚体。 你可以开启关节限制来设置刚体运行移动的间距,也可以开启马达来使用关节马达驱动刚体的运行。

说明:

不能旋转,只能在限制的坐标轴上移动。

LocalAxisA:指定刚体可以移动的方向。这里X=1,表示只能在X轴左右移动。

ReferenceAngle:相对角度。关节两端的刚体之间的相对角度。

EnableLimit:是否开启关节的距离限制。开启后,关节刚体只能在限制的LowerLimit和UpperLimit范围内移动。这里表示只能在x轴200-400像素之间移动。

EnableMotor:是否开启马达。开启后刚体会以maxmotorforce的力向指定坐标轴移动,直到速度达到motorspeed。

可以看到刚体只能在x轴移动,并且移动范围限制在200-400像素。这可用于一些横版游戏中,只能左右或者指定方向移动的地形、机关等。

应用

限制指定方向移动,不能旋转,可选马达,可选限制范围

1. 开启马达,限制x轴左右移动,限制移动范围在两个端点,可以做成来回移动的滑轨车

2. 抽屉

revoluteJoint旋转关节

cocos文档定义:

旋转关节可以约束两个刚体围绕一个点来进行旋转。 你可以通过开启关节限制来限制旋转的最大角度和最小角度。

你可以通过开启马达来施加一个扭矩力来驱动这两个刚体在这一点上的相对速度。

说明:

和其他关节差不多,都是限制一些角度和力的参数。

中间为关节另一端的刚体,类型为static。 绑定关节的刚体以1000的力在距离关节另一端刚体(13,202)的位置旋转。

我们用旋转关节做一辆小车。红色相当于车身,白色相当于车轮。

红色为绑定revoluteJoint的node,节点绑着两个revoluteJoint关节,关节的Connected Body分别是两个白色的box刚体,相当于车轮。

每个车轮有maxmotortorque 500的力,最大速度为motorspeed 200。

应用

两个刚体绕一个点旋转,可选旋转角度,可选马达

1. 一端固定,一端开启马达旋转, 电风扇、车轮

2. 关闭马达,只设置旋转范围,可组成人体的关节

3. 绳子

为什么绳子不用绳子关节来做,因为绳子关节不能限制旋转范围,不能限制位置范围,不能限制旋转节点。

ropeJoint绳子关节

cocos文档定义:

绳子关节只指定两个刚体间的最大距离,没有其他的效果。 注意:如果你试图动态修改关节的长度,这有可能会得到一些意外的效果。

说明:

maxlength:绳子的最大距离

没啥特点吧。他们没有弹力,没有马达。仅仅是像绳子绑着两个刚体,被限制在maxlength 200范围内。

应用

限制最大长度

1. 溜溜球

2. 遛狗,狗绳

weldJoint焊接关节(熔接关节、粘贴关节)

cocos文档定义:

熔接关节相当于将两个刚体粘在了一起。 熔接关节可能会使某些东西失真,因为约束求解器算出的都是近似值

说明:

像两个刚体被一条钢筋焊接起来了。和距离关节相比,距离关节的两个刚体可以在各自节点旋转,焊接关节两个刚体则不可以在各自节点旋转。

如果设置Frequency弹力的话,比如Frequency=0.5,关节刚体可以在自己节点旋转,但是另一端刚体则不可以旋转。

应用

两个刚体被焊接(粘贴)在一起,可以设置弹性

1. 刚体可以被焊接在一起

2. 也可以理解各种刚体被粘贴在一起

3. 一个游戏

4. 设置弹性后,关节所在刚体可以旋转。例如柔体矩形,矩形可以弯曲。

焊接关节组成的圆环,设置弹性后,可以弯曲。

wheeljoint轮子关节

cocos文档定义:

轮子关节提供两个维度的自由度:旋转和沿着指定方向上位置的移动。 你可以通过开启关节马达来使用马达驱动刚体的旋转。 轮组关节是专门为机动车类型设计的。

说明:

轮子关节,由 Revolute 和 Prismatic 组合成的关节,用于模拟机动车车轮。

LocalAxis:指定刚体可以移动的方向

MaxMotorT...:可以施加到刚体的最大扭矩力

Motor Speed:期待的马达速度

EnableMotor:开启马达

Frequency:弹性系数

DampingRatio:阻尼

和RevoluteJoint关节相比,同样拥有马达,还增加了弹力和限定移动方向。

Frequency弹性系数就像汽车轮胎的减震,在车轮运动时,可以晃动。

Local Axis A 限定方向,可以限定减震的弹力的方向只能上下。

下图中,红色刚体绑定两个wheelJoint关节,设置ConnectedBody分别是两个circle圆形刚体。

马达的扭矩力为200,最大速度为1000,也就是车轮的驱动力和最大速度。

弹性系数为5,阻尼为0.1,限定方向为Y轴,相当于这车的减震系统了。

Anchor锚点分别设置到Connected Body也就是车轮的中心点上(选中车轮关节时,会有一个蓝色的标识,这个蓝色就是Anchor,拖动蓝色标识到圆形刚体中心就行了)

选择两个车轮,设置圆形刚体的摩擦系数0.8,弹性系数为0.2的。

如果摩擦系数为0的话,相当于车轮对于地面一直在打滑,跑不动。

以上就是怎样在CocosCreator中使用物理引擎关节的详细内容,更多关于CocosCreator 物理引擎关节的资料请关注我们其它相关文章!

(0)

相关推荐

  • 剖析CocosCreator新资源管理系统

    1.资源与构建 1.1 creator资源文件基础 在了解引擎如何解析.加载资源之前,我们先来了解一下这些资源文件(图片.Prefab.动画等)的规则,在creator项目目录下有几个与资源相关的目录: assets 所有资源的总目录,对应creator编辑器的资源管理器 library 本地资源库,预览项目时使用的目录 build 构建后的项目默认目录 在assets目录下,creator会为每个资源文件和目录生成一个同名的.meta文件,meta文件是一个json文件,记录了资源的版本.uu

  • CocosCreator学习之模块化脚本

    Cocos Creator模块化脚本 Cocos Creator 允许你将代码拆分成多个脚本文件,并且让它们相互调用.这个步骤简称为 模块化. 模块化使你可以在 Cocos Creator 中引用其它脚本文件: 访问其它文件导出的参数 调用其它文件导出的方法 使用其它文件导出的类型 使用或继承其它 Component Cocos Creator 中的 JavaScript 使用和 Node.js 几乎相同的 CommonJS 标准来实现模块化,简单来说: 每一个单独的脚本文件就构成一个模块 每个

  • CocosCreator入门教程之用TS制作第一个游戏

    前提 无论学什么技术知识,官方文档都应该是你第一个教程,所以请先至少阅读新手上路这一节 http://docs.cocos.com/creator/manual/zh/getting-started/ 再来看这篇文章. 这里假设你已经安装成功了 Cocos Creator. TypeScript VS JavaScript 这里当然只会讲优点: 1. ts 是 js 的超集,所有 js 的语法 ts 都支持. 2. ts 支持接近完美的代码提示,js 代码提示接近于没有. 3. ts 有类型定义

  • CocosCreator怎样使用cc.follow进行镜头跟随

    Cocos Creator版本:2.3.4 Demo下载:https://files-cdn.cnblogs.com/files/gamedaybyday/cocos2.3.4_ccfollow.7z 说先来使用下cocoscreator自带的跟随代码,cc.follow. CC.Follow使用 一.设置地图适配容器leftNode 假设这是个横屏跑酷游戏.地图大小1500x1500,那么leftNode高宽为1500x1500,并且widget居左下对齐. 二.设置地图容器map 地图容器也

  • Unity3D实现摄像机镜头移动并限制角度

    本文实例为大家分享了Unity3D实现摄像机镜头移动并限制角度的具体代码,供大家参考,具体内容如下 摄像机镜头跟随鼠标移动,并限制上下左右的移动角度 public class ViewFromCream : MonoBehaviour { public int speed=5; public Vector3 vect; private float xcream; private float ycream; public void Update() { CreamView(); } private

  • 如何在CocosCreator中使用http和WebSocket

    CocosCreator版本2.3.4 一.HttpGET Get方式,客户端请求本机地址3000端口,并携带参数url和name,服务端收到后返回name参数. cocos客户端: //访问地址 let url = "http://127.0.0.1:3000/?url=123&name=321"; //新建Http let xhr = new XMLHttpRequest(); //接收数据 xhr.onreadystatechange = function () { if

  • CocosCreator通用框架设计之资源管理

    如果你想使用Cocos Creator制作一些规模稍大的游戏,那么资源管理是必须解决的问题,随着游戏的进行,你可能会发现游戏的内存占用只升不降,哪怕你当前只用到了极少的资源,并且有使用cc.loader.release来释放之前加载的资源,但之前使用过的大部分资源都会留在内存中!为什么会这样呢? cocos creator 资源管理存在的问题 资源管理主要解决3个问题,资源加载,资源查找(使用),资源释放.这里要讨论的主要是资源释放的问题,这个问题看上去非常简单,在Cocos2d-x中确实也很简

  • 如何在CocosCreator中做一个List

    CocosCreator版本:2.3.4 cocos没有List组件,所以要自己写.从cocos的example项目中找到assets/case/02_ui/05_listView的demo来改造. 自写一个虚拟列表,有垂直布局,水平布局,网格布局和Padding的List Demo地址:https://files-cdn.cnblogs.com/files/gamedaybyday/cocos2.3.4_ListViewDemo_Grid.7z cocos原来的LayOut做列表,有100个数

  • 如何在CocosCreator中使用JSZip压缩

    CocosCreator版本:2.4.2 jszip的实际项目应用 游戏中有大量配置的情况下,文件会变得非常大,所以有些游戏会采用zip包压缩解压 例如如下游戏,将游戏配置config.json压缩成zip包,加载后进行解压使用 拿到他的配置压缩包 将.bin改成.zip,进行解压,得到游戏的所有json配置文件 未压缩之前6M+ 压缩后文件 500KB+,压缩后小了10倍左右. 在cocos中使用jszip 首先,在github上下载jszip库  https://github.com/Stu

  • 详解CocosCreator中几种计时器的使用方法

    一.setTimeOut 3秒后打印abc.只执行一次. setTimeout(()=>{console.log("abc"); }, 3000); 删除计时器,3秒后不会输出abc. let timeIndex; timeIndex = setTimeout(()=>{console.log("abc"); }, 3000); clearTimeout(timeIndex); setTimeout这样写,test函数中输出的this是Window对象

  • 解读CocosCreator源码之引擎启动与主循环

    前言 预备 不知道你有没有想过,假如把游戏世界比作一辆汽车,那么这辆"汽车"是如何启动,又是如何持续运转的呢? 如题,本文的内容主要为 Cocos Creator 引擎的启动流程和主循环. 而在主循环的内容中还会涉及到:组件的生命周期和计时器.缓动系统.动画系统和物理系统等... 本文会在宏观上为大家解读主循环与各个模块之间的关系,对于各个模块也会简单介绍,但不会深入到模块的具体实现. 因为如果把每个模块都"摸"一遍,那这篇文章怕是写不完了. Go! 希望大家看完这

随机推荐