box2d 刚体碰撞设定方法


 


     fixtureDef.filter.categoryBits指自己所属的碰撞种类,fixtureDef.filter.maskBits指与其碰撞的种类;b2FixtureDef fixtureDef;注意 fixtureDef.filter.categoryBits 的值必须是2的倍数,假如有两个body 他们的 filter.categoryBits分别为2,4,则另一个body要想与他们两个都发生碰撞,则其filter.maskBits应该为: 2+4= 6.


   对于fixtureDef.filter.groupIndex 属性: 当其为负值时,表示该组的对象不发生碰撞,为正值则表示该组的对象发生碰撞;另外,要使两个对象不发生碰撞,则: groupIndex 属性必须为负, 并且groupIndex 的值一样,这样才能不发生碰撞, 其他情况都会发生碰撞(即两个不相同的负值的body也会发生碰撞. 由上述可知).

   控制body是否发生碰撞有两种方法: 法1: 用fixtureDef.filter.categoryBits(自己所属的碰撞种类)和 fixtureDef.filter.maskBits(指定碰撞种类); 法2:直接使用fixtureDef.filter.groupIndex即可 当上述两种情况都使用的话,则由fixtureDef.filter.groupIndex决定 因为fixtureDef.filter.groupIndex的优先级高些 。