box2d b2Filter 碰撞过滤

{

-分组索引(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)占位符体现的价值就在这里


注意的是,碰撞与碰撞之间必须是相对的,你碰我,我也必须能碰你

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值