box2d碰撞规则说明
2011-09-05 16:47
411 查看
有三个几个参数说明 groupIndex和categoryBits还有maskBits
有两种判断是否碰撞的方法
一个是是否同一种群
二 当不是同一种群是使用种类和掩码值进行判断
要注意的是群 和 种类之间没有关系 他们是并列关系
只不过判断碰撞的时候先判断从种群入手符合的时候就不进行下面的判断了
如果不符合就对掩码和种类的关系进行判断
这是文件里定义组索引groupIndex
还有后面的
两个参数一个是碰撞种类的值categoryBits
另外一个是碰撞掩码值的设定maskBits
const int16 k_smallGroup = 1;
const int16 k_largeGroup = -1;
const uint16 k_defaultCategory = 0x0001;
const uint16 k_triangleCategory = 0x0002;
const uint16 k_boxCategory = 0x0004;
const uint16 k_circleCategory = 0x0008;
这是一段代码指定了一个物体的碰撞规则使用到了三个参数
triangleShapeDef.filter.groupIndex = k_smallGroup;
triangleShapeDef.filter.categoryBits = k_triangleCategory;
triangleShapeDef.filter.maskBits = k_triangleMask;
1组优先规则
组优先即程序会先判断组索引相同的物体之间的碰撞然后在确定不相同的物体之间的关系
判断所属的组索引如果两个物体的组索引同为正则永远发生碰撞
如果两个组索引的值都是负 且相同则永远不发生碰撞 如果不相同那么还是会发生碰撞
2:种群和掩码规则(如果不同种群之间的接触需要的规则,当两个物体属于的种群都是负的时候而且种群的负值不相同这时候就要使用这个判断)
如果组索引不同是的规则就和种类和掩码有关系了
种类的定义只能是2的倍数否则有些碰撞就不在我们控制之内原因解释http://blog.sina.com.cn/s/blog_6a2061a20100n0or.html
如果需要一个种类a的某物体和另外一个或者多个种类的物体碰撞计算方法是这样
a的掩码值=(a种类的的值+b种类的的值+c种类的的值+d种类的的值)注意的是啊与括号内的所有物体都进行碰撞
如果还有物体m n 不设在此 那么他们之间接触不进行碰撞
了解怎么设定碰撞后在看看代码例子中的那些设定是不是就明白了啊
至于为什么这样用大家多想想就明白了用途其实恨广的
有两种判断是否碰撞的方法
一个是是否同一种群
二 当不是同一种群是使用种类和掩码值进行判断
要注意的是群 和 种类之间没有关系 他们是并列关系
只不过判断碰撞的时候先判断从种群入手符合的时候就不进行下面的判断了
如果不符合就对掩码和种类的关系进行判断
这是文件里定义组索引groupIndex
还有后面的
两个参数一个是碰撞种类的值categoryBits
另外一个是碰撞掩码值的设定maskBits
const int16 k_smallGroup = 1;
const int16 k_largeGroup = -1;
const uint16 k_defaultCategory = 0x0001;
const uint16 k_triangleCategory = 0x0002;
const uint16 k_boxCategory = 0x0004;
const uint16 k_circleCategory = 0x0008;
这是一段代码指定了一个物体的碰撞规则使用到了三个参数
triangleShapeDef.filter.groupIndex = k_smallGroup;
triangleShapeDef.filter.categoryBits = k_triangleCategory;
triangleShapeDef.filter.maskBits = k_triangleMask;
1组优先规则
组优先即程序会先判断组索引相同的物体之间的碰撞然后在确定不相同的物体之间的关系
判断所属的组索引如果两个物体的组索引同为正则永远发生碰撞
如果两个组索引的值都是负 且相同则永远不发生碰撞 如果不相同那么还是会发生碰撞
2:种群和掩码规则(如果不同种群之间的接触需要的规则,当两个物体属于的种群都是负的时候而且种群的负值不相同这时候就要使用这个判断)
如果组索引不同是的规则就和种类和掩码有关系了
种类的定义只能是2的倍数否则有些碰撞就不在我们控制之内原因解释http://blog.sina.com.cn/s/blog_6a2061a20100n0or.html
如果需要一个种类a的某物体和另外一个或者多个种类的物体碰撞计算方法是这样
a的掩码值=(a种类的的值+b种类的的值+c种类的的值+d种类的的值)注意的是啊与括号内的所有物体都进行碰撞
如果还有物体m n 不设在此 那么他们之间接触不进行碰撞
了解怎么设定碰撞后在看看代码例子中的那些设定是不是就明白了啊
至于为什么这样用大家多想想就明白了用途其实恨广的
相关文章推荐
- Box2D 碰撞过滤规则
- Box2d_无规则图形的碰撞检测 和 cocos2d_粒子效果制作以及粒子效果的辅助工具
- [cocos2d-x]Box2D 碰撞过滤规则
- ccform 单据打印的规则调整与新增功能发布说明
- ARCGIS中拓扑规则的说明
- [AndEngine学习教程] 第10节 box2D 物理碰撞系统
- ESlint 规则说明
- Eslint 规则说明
- BOX2D 第四章 碰撞模块
- Python 中特殊变量/方法命名规则说明(特别是私有变量)及使用实例
- McAfee8.8 墨池安全通用规则与排除说明
- ASP.NET Aries 高级开发教程:Excel导入配置之规则说明(下)
- box2d 碰撞过滤
- OCLint官方规则文档中文说明
- 文章推荐规则说明
- cocos2d-x 不规则碰撞检测 【转载】
- Eslint 规则说明
- ios内存管理规则ARC 最简单说明
- 命名规则说明
- apache的rewrite规则使用说明