Box2D和冲突掩码位的分层机制

时间:2014-03-08 00:28:52

标签: java libgdx box2d bit-manipulation bitwise-operators

我在创建自配置碰撞图层时遇到了一些问题。

我的过滤器类别配置如此

final short category_00 =     0x0000;
final short category_01 =     0x0001;
final short category_02 =     0x0002;
final short category_03 =     0x0004;
final short category_04 =     0x0008;
final short category_05 =     0x0010;
...

接下来是一个包含上述所有内容的数组(共16个)。

Array<Short> availableCategories = new Array<Short>();  
availableCategories.add(category_00);
availableCategories.add(category_01);
availableCategories.add(category_02);
availableCategories.add(category_03);
availableCategories.add(category_04);
availableCategories.add(category_05);

现在,没有编辑,我可以简单地做

short myCustomMask = (short) ( category_02 | category_05 ) 

但我想控制碰撞矩阵,为此我必须创建一个简短的做| (或)自定义数组中的所有元素(将用作过滤器掩码位=图层)

Array<Short> maskTmp = new Array<Short>(16);
maskTmp.add(i);
maskTmp.add(i+1);
maskTmp.add(i+n);



short myCustomLayer = (short) (maskTmp.get(i) | maskTmp.get(i+1) | maskTmp.get(i+n))  

我从未对按位运算符做过任何事情,一个问题是如何做到这一点?第二种方式是这样做的正确方法吗?

0 个答案:

没有答案