我在创建自配置碰撞图层时遇到了一些问题。
我的过滤器类别配置如此
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))
我从未对按位运算符做过任何事情,一个问题是如何做到这一点?第二种方式是这样做的正确方法吗?