最近用到碰撞分组,并且要代码去动态改变原有的分组,
问题如下:A、B两个节点 初始都是default分组,当某一事件发生后,我把B的分组用代码改为other, nodeB.group = "other"; 然后B还是会和A碰撞,
解决办法:在动态更改group之后 调用 nodeB.active = false;nodeB.active = true; 这样就来使 collider 被添加生效了,B不会和A碰撞了, 原因是creator目前还没很好支持动态改变分组这个特性。
并且collider 是在 onEnable 和 onDisable 中被 添加/删除 到 collision manager 中的。
这样碰撞问题是解决了,但是总是报错,说collider已经被移除什么的,
解决办法:先把nodeB 隐藏,延迟0.05s 再改变分组 和显示出来 就可以了
nodeB
.
active
=
false
;
this.
scheduleOnce(()
=> {
nodeB.
group =
"other";
nodeB.
active =
true;
},
0.05);