1、引擎默认情况下,group = 1,mask = -1。假如你需要比较精细的分组,最好不要使用默认值。
2、如下代码块说明了使用方法,
this.plane.setGroup(1 << 0); //默认分组为0
this.collider.setGroup(1 << 1); //设置分组layer = 1
this.collider.setMask((1 << 2) + (1 << 0)); //碰撞层:layer = 2,layer = 0
this.collider2.setGroup(1 << 2);//设置分组layer = 2
this.collider2.setMask((1 << 1)+ (1 << 0));//碰撞层:layer = 1
this.collider3.setGroup(1 << 0); //设置分组layer = 0,默认和所有layer碰撞
3、分组使用
1)表达式依赖位运算,javascript中位运算的操作数是32位的,并且最后一位是符号位,为避免超出运算范围,建议组的范围为[0, 31)。
2)建议使用node节点的layer属性值定义group值。
3)若需要忽略自身group的碰撞,只需将group设置为非0,mask不添加该group值即可。
4、掩码的使用(摘自官方API),掩码可以根据分组进行定义,例如以下示例:
定义一个只检测Group1的掩码const maskForGroup1 = PHY_GROUP.Group1;
定义一个可检测Group0和Group1的掩码const maskForGroup01 = PHY_GROUP.Group0 + PHY_GROUP.Group1;
定义一个所有组都不检测的掩码const maskForNone = 0;
定义一个所有组都检测的掩码const maskForAll = -1;
5、项目超链接