资讯专栏INFORMATION COLUMN

Matter.js碰撞设置规则

Baoyuan / 715人阅读

摘要:是一套不错的物理引擎,内置后,变得更加好用相互碰撞提供了属性,支持三种属性,分别是使用三种属性,就能设计出很复杂的碰撞关系其中规则如下第一种情况在两个相等的前提下如果任意大于零,则两者始终碰撞,比如大家都是,这大家相互直接始终碰撞如果任意小

Matter是一套不错的js物理引擎,LayaAir内置后,变得更加好用

Matter相互碰撞提供了collisionFilter属性,支持三种属性,分别是

group
category
mask

使用三种属性,就能设计出很复杂的碰撞关系

其中规则如下:
第一种情况

在两个group相等的前提下
如果任意group大于零,则两者始终碰撞,比如大家都是1,这大家相互直接始终碰撞
如果任意group小于0,比如大家都是-1,则大家永远也不碰撞
除上述两种情况,则根据category和mask进行判定

第二张情况

在两个group不相等的前提下
根据category和mask进行判定

根据category和mask判定

category,mask判定规则
category代表一个碰撞分类,其值可为1,2,4,8...直到 2^31,每个刚体设置一个值
mask为碰撞集合(category集合),是category相与的结果值,比如接受2,4类型,其值为6
a和b碰撞情况是
a的mask必须包含b的category,同时b的mask也必须包含a的category,即
(a.category & b.mask) !== 0 && (b.category & a.mask) !== 0

总结如下:
简单的碰撞关系,直接设置group即可
复杂的碰撞关系,可以通过设置category和和mask值进行搭配,做出很高级的碰撞关系

附带我做的小物理游戏

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94316.html

相关文章

  • JavaScript物理引擎之Matter.js与Box2d性能对比

    摘要:数据采集因为是测试物理引擎的性能,这里不考虑,只采集物理引擎更新每一帧的时间,因为除开物理引擎,渲染引擎也会带来性能消耗。 前言 在挑选JavaScript 2D物理引擎的时候,不外乎两种主流的选择:第一种是老牌的Box2D,最开始的版本是C++实现的,后来有了很多种实现,比如flash版本和js版本,具体可看:https://stackoverflow.com/que...;第二种是...

    whinc 评论0 收藏0
  • 可能是最全的前端动效库汇总

    摘要:非常的庞大,而且它是完全为设计而生的动效库。它运行于纯粹的之上,是目前最强健的动画资源库之一。可能是创建滚动特效最好用的工具,它支持大量的浏览器,只要它们支持和特性。可以通过安装吊炸天了,接近现实生活中的物理运动碰撞惯性动画库。 收集日期为2019-02-28,★代表当时的该项目在github的star数量 Animate.css 56401 ★ 一个跨浏览器的动效基础库,是许多基础动...

    afishhhhh 评论0 收藏0
  • js+canvas仿微信《弹一弹》小游戏

    摘要:在弹一弹游戏中,小球不能向上发射。这里又有一个坑弹一弹游戏中,刚射击出去的小球是不受重力影响的不然瞄准还有什么意义。 前言 半年前用js和canvas仿了热血传奇网游(地址),基本功能写完之后,剩下的都是堆数据、堆时间才能完成的任务了,没什么新鲜感,因此进度极慢。这次看到微信《弹一弹》比较火,因为涉及到物理引擎(为了真实),于是动手试了一下。一共用了10个小时,不仅完成了这个demo,...

    Invoker 评论0 收藏0

发表评论

0条评论

Baoyuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<