使用版本creator3.32
步骤
-
在项目设置面板里的物理层添加一个碰撞层player,因为默认default层值是1,所以player层的值是2,设置碰撞组,player层和default层不碰撞,player层和player层能碰撞。
-
创建一个场景,场景立加入两个物体A,B,并添加上BoxCollider和Rigidbody组件。BoxCollider都勾选isTrigger。A的 Rigidbody的group 设置为default , B的 Rigidbody的group 设置为player。因为碰撞组设置了player 和 default层不会发生碰撞,所以默认A,B是不发生碰撞的。
-
创建一个脚本,在onLoad函数立设置A的碰撞层的值 A.getComponent(BoxCollider).setGroup(2);也就是改把A的碰撞层从default 改成 player,这样A和B都是player层了,理论上是可以碰撞的。
-
给物体A的BoxCollider添加触发器事件监听 onTriggerEnter。
-
结果虽然A和B都是同一个碰撞层player,但是无论怎么接触都无法触发onTriggerEnter事件。
6.如果在A的属性面板的Rigidbody的group的层默认设置为player 就可以触发onTriggerEnter事件了。
最后总结出通过代码修改Collider的group是无效的。
@panda 希望下个版本你们能修改这个bug,最近做项目,场景物体资源数量比较多,想在代码里动态批量修改物体的碰撞器的碰撞组,结果监听触发器事件监听不到。但是在旧版的Creator3D 2.1是没问题.