这一章 我们来研究下 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的优先级别会比 其他两个要高
这一张 比较简单,就不啰嗦了 , 测试代码我稍后整理后发出 嘿嘿 ,公司的项目拖的 好忙 好多事要做 ,所以有时会慢一点 更新博客