onCollisionEnter调用不到

新人求助

我用Cocos Creator 3.8.4新建了一个空3D工程。然后放了一个胶囊和一个圆柱,给胶囊和圆柱分别添加了各自的Collider,并且给胶囊添加了rigidbody好让他可以落到圆柱上。在浏览器中测试,胶囊可以正确地落到浏览器中并停下。
此时我在胶囊上绑一个碰撞检测脚本,可以看到start()中的"Detector created"被成功打印出来,但是onCollisionEnter()中的log却打不出来,之前在另一个工程里也是发现onCollisionEnter()似乎从没被成功调用,不知道问题出在哪里了。希望有大神可以指导一下,感谢~

image

import { _decorator, Component, physics, Vec3 } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('CollisionDetection')
export class CollisionDetection extends Component {
    start() {
        console.log("Detector created");

        // Add RigidBody and Collider components if not already added
        const rigidBody = this.node.getComponent(physics.RigidBody);
        // rigidBody.type = physics.RigidBodyType.DYNAMIC; // Set RigidBody type
        rigidBody.collisionDetection = true; // Enable collision detection

        // No need to manually register the collision callback; Cocos Creator handles it automatically
        // rigidBody.on('onCollisionEnter', this.onCollisionEnter, this);
    }

    onCollisionEnter(other: physics.Collider, self: physics.Collider): void {
        console.log("Collision Detected: " + self.node.name + " and " + other.node.name);
    }
}

这个功能,直接找一下官方的demo,看看他们是怎么碰撞的。不要盲目搞。多看看没坏事。

建议直接3.8.5

3.8 2d版本要有注册的 我昨天才知道,2.4版本不用
image

统一回复,谢谢各位大哥,问题已解决。
后来也是发现需要注册并传入ITriggerEvent,虽然VSCode会报错但这样表现是正常的。

最开始用的是编辑器不标红线的写法,居然调用不到