android box2d重力系统 碰撞检查(二)

 这一章 我们来研究下 jbox2d 是如何坚持碰撞的  大家应该都只android 碰撞有多种方法 比如 矩形碰撞检测,圆形碰撞检测,多矩形碰撞检测,像素碰撞检测, 那jbox2d又给我们提供了哪些方法呢  ?    

  在jbox2d中 其实我们完全可以不用去检查碰撞,因为jbox2d已经完全给我们封装好了,  在jbox2d中我们可以不去写各种刚体的碰撞规则,jbox2d自己会检查,并计算碰撞后的位置,而我们需要做的是把刚体的各个参数 配置好就可以了

在jbox2d中有几个碰撞行为 需要注意   如下

fixtureDef.filter.categoryBits  设置自己所属的碰撞种类 值为 2 的倍数

fixtureDef.filter.maskBits      设置与其碰撞的物体种类 值为 2 的倍数

fixtureDef.filter.groupIndex    设置是否参与碰撞 负值不参与碰撞 正值 才参与                                  碰撞

这3个属性 可以设置我们的刚体在游戏中的碰撞行为 我们来一一解析下

fixtureDef.filter.categoryBits  其值必须为2的倍数 比如说 ,有两个 body 刚体他们的categoryBits 的值分别为2和4  这时有第3个body刚体想和这两个body产生碰撞的话  那么这个body的maskBits的值必须为前面两个刚体categoryBits的值的和 也就是为 6

fixtureDef.filter.groupIndex    设置是否参与碰撞 负值不参与碰撞,正值才参与碰撞  不如 有两个body刚体我们不想它们产生碰撞 ,那么我们可以将其的gorupIndex的值设置为 负值 并且两个body的groupIndex的值是一样,这样才不会产生碰撞, 

由此可见 我们设置刚体是否碰撞我们是有两种方法的 

1: 设置刚体的fixtureDef.filter.categoryBits和fixtureDef.filter.maskBits属性

2:  设置fixtureDef.filter.groupIndex属性

但是当上面两种方法同时存在呢?  那Jbox2d会以groupIndex属性为准 因为gruopindex的优先级别会比 其他两个要高

这一张 比较简单,就不��嗦了 , 测试代码我稍后整理后发出 嘿嘿 ,公司的项目拖的 好忙 好多事要做 ,所以有时会慢一点 更新博客 



 

 

 

 

你可能感兴趣的:(android,职场,休闲,碰撞检测,jbox2d)