Matter.js设置碰撞规则

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值进行搭配,做出很高级的碰撞关系

附带我做的小物理游戏

原文地址:http://blog.51cto.com/13699797/2104183

时间: 2024-10-24 08:15:57

Matter.js设置碰撞规则的相关文章

OSS设置CORS规则以后还是报No 'Access-Control-Allow-Origin'解决方法

OSS设置CORS规则以后还是报No 'Access-Control-Allow-Origin'解决方法 在OSS控制台设置了CORS规则以后,通过JS程序去调用的时候报No 'Access-Control-Allow-Origin' header is present on the requested resource,可以通过下面的思路来进行下排查: 1. 确认检查CORS规则是否设置好了,是否设置正确,正确的设置方法如下图: 2. CORS设置都正确的话,那就检查AllowedHeader

JS设置读取删除cookie及表单交互

学习cookie和表单交互留下的一点笔记 什么是cookie?cookie 是存储于客户端的变量.当设备请求页面时,就会发送cookie.首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式.各个cookie之间一般是以";"分隔.JS设置cookie:document.cookie= key + '=' + value + ';expires=' + Date;其中Date为cookie的过期时间.实际案例: //setCo

JS设置cookie,删除cookie(引)

JS设置cookie,删除cookie(引) js设置cookie有很多种方法. 第一种:(这个是w3c官网的代码) <script> //设置cookie function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+d.toUTCString(); docum

js设置下拉框选中后change事件无效解决

下拉框部分代码: <select id="bigType"> <option value="">请选择</option> <option value="1">xiamen</option> <option value="2">beijing</option> </select> <select id="smallTy

运用JS设置cookie、读取cookie、删除cookie

运用JS设置cookie.读取cookie.删除cookie JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的. 而cookie是运行在客户端的,所以可以用JS来设置cookie. 假 设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来 引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭

Js 设置class,兼容ie,火狐的方式

var trs = document.getElementsByTagName("tr"); trs[0].className="color2";  //设置css样式. 不兼容火狐! 兼容火狐,ie的写法为: var cls = trs[0].getAttribute('class'); // 添加classtrs[0].setAttribute('class', cls + ' color3'); Js 设置class,兼容ie,火狐的方式,布布扣,bubuko

iptables设置访问规则

一.简介 iptables是一个很强大的设置防火墙的工具,可以使用它来限制所有对本机的访问,允许特定的主机.特定的端口才能访问本机,还能设置那些协议能够访问本机.总之,很强大,也很简单. 二.filter chain原理简述 在开始之前,先看一下iptables的filter chain是如何工作的: 注释:当Input进来之后,先通过first chain,如果符合直接本机接收:不符合传给second chain,依次到最后一个chain,着了third不一定是最后的chain,在最后chai

前台JS设置Cookies后台读取刚设置的Cookies

今天在整理代码的时候,发现以前做到一半的功能没有实现.今天完善一下,并无私的将代码分享给大家. 前台代码: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 3 <html xmlns="http://www.w3.org/1999/xht

JS设置cookie、读取cookie、删除cookie

Js操作Cookie总结(设置,读取,删除),工作中经常会用到的哦!下面是详细代码,如有错误,请留言指正! JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的. 而cookie是运行在客户端的,所以可以用JS来设置cookie. 假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生