Matter.js碰撞設置規則

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

clipboard.png

相關文章
相關標籤/搜索