{
-分组索引(groupIndex)
-类别标志位(categoryBits)
-遮罩标志位(maskBits)}
网上也有写的一些文章,说的有点不太详细,本人推荐下面的这个链接可以看看这个,写的不错,英文好的话,尽量看原版
http://www.ohcoder.com/blog/2012/11/30/collision-filtering/
{// 分组索引 (groupIndex)
分组索引 碰撞优先级 默认值 0
1: 同组正数可以碰撞(正正 (1,1)) 不考虑(categoryBits 和 maskBits)
2: 同组负数不可以碰撞( 负负 (-1,-1)) 不考虑(categoryBits 和 maskBits)
3: 碰撞的优先级( 正正碰撞(1,3) 正负碰撞 (1,-1),负负碰撞 (-1,-3)) 考虑 (categoryBits 和 maskBits)
}
{// 类别标志位(categoryBits) 16种
每一个标志位是 一个16位的二进制整数,因此你可以设置 16种不同的碰撞类型。
其实还是有很大灵活度的,因为可以组合这些标志位,以此可以决定两个定制器之间是否会发生碰撞。
带有分组索引标志位的定制器,可以覆盖带有类别/遮罩标志位的定制器集合。
000000000000000 1 //1
00000000000000 10 //2
0000000000000 100 //4
000000000000 1000 //8
00000000000 10000 //16
0000000000 100000 //32
000000000 1000000 //64
00000000 10000000 //128
0000000 100000000 //256
000000 1000000000 //512
00000 10000000000 //1024
0000 100000000000 //2048
000 1000000000000 //4096
00 10000000000000 //8192
0 100000000000000 //16384
1000000000000000 //32768
}
{// 掩码标志位(maskBits)
1: 0 不碰撞,0xFFFF完全碰撞 默认值 0xFFFF
2: 不同的定制器之间的碰撞过滤限制
例1 两个定时器碰撞 A碰B
0000000000000001 //1 刚体A categoryBits 类别标志位
0000000000000010 //2 刚体B categoryBits 类别标志位
它们碰撞的话
maskBits 必须写成 (0000000000000001)|(0000000000000010) == (0000000000000011) 占位符体现的价值就在这里
注意的是,碰撞与碰撞之间必须是相对的,你碰我,我也必须能碰你
例2 三个定时器碰撞 A碰B A碰C B不能碰C
0000000000000001 //1 刚体A categoryBits 类别标志位
0000000000000010 //2 刚体B categoryBits 类别标志位
0000000000000100 //4 刚体C categoryBits 类别标志位
它们碰撞的话
A maskBits 必须写成 (0000000000000001)|(0000000000000010)|(0000000000000100) == (0000000000000111) 占位符体现的价值就在这里
B maskBits 必须写成 (0000000000000001)|(000000000000010) == (0000000000000011) 占位符体现的价值就在这里
B maskBits 必须写成 (0000000000000100)|(000000000000001) == (0000000000000101)占位符体现的价值就在这里
注意的是,碰撞与碰撞之间必须是相对的,你碰我,我也必须能碰你
}