Cocos 3D V1.1 CylinderCollider Bug

节点上同时挂载BoxCollider和CylinderCollider
BoxCollider组件关闭
CylinderCollider 组件打开
会产生无法接收onCollisionEnter事件

检查下注册对象是不是BoxCollider ,另外,可以麻烦给个稳定复现的Demo吗

注册对象是ColliderComponent

Demo:
test_1.zip (800.3 KB)

注册对象改为CylinderColliderComponent
也会出现这个问题

这个 demo 就是注册在 box collider 上的,因为没有启用,接受不到事件是正常的

试试下面的代码,我这边是正常的

    onLoad() {
        this.collider = this.getComponent(CylinderColliderComponent);
        this.collider.on('onCollisionEnter', this.onCollisionEnter, this);
    }

试了你的代码是正常的

不懂为啥还要getComponent
用拖拉的方式this.collider不是已经得到Component了嘛

拖拉节点,当有多个满足类型的组件时,会设置成第一个组件

原来会设成第一个组件
明白了

请问取消事件注册是怎么用的,我这么写会报错

你可以贴一下截图,看一下是什么报错?

一直报这个错,我打印了collider,明明不是空的,而且onDestroy不是在销毁的前一帧执行的吗,为什么会报错?求解

脚本组件的顺序要在collider组件前面才行,不然collider组件会优先destruct,属性方法都置空了。
或者考虑在onEnable,onDisable的时候注册和取消事件。
感觉现在是有点问题的,不应该这样就报错,或者在文档中应该有事件取消的实践规范。