Matter是一套不錯的js物理引擎,LayaAir內置後,變得更加好用spa
Matter相互碰撞提供了collisionFilter屬性,支持三種屬性,分別是設計
group
category
mask
使用三種屬性,就能設計出很複雜的碰撞關係blog
其中規則以下:
第一種狀況遊戲
在兩個group相等的前提下
若是任意group大於零,則二者始終碰撞,好比你們都是1,這你們相互直接始終碰撞
若是任意group小於0,好比你們都是-1,則你們永遠也不碰撞
除上述兩種狀況,則根據category和mask進行斷定
第二張狀況ip
在兩個group不相等的前提下
根據category和mask進行斷定
根據category和mask斷定it
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值進行搭配,作出很高級的碰撞關係io
附帶我作的小物理遊戲class