请问3.8.5版本两个精灵组件重叠为什么检测不到碰撞?

已经在两个重叠的精灵组件上添加了BoxCollider2D组件

这是代码
import { _decorator, Component, Node,Collider2D,IPhysics2DContact,Contact2DType,BoxCollider2D} from ‘cc’;

const { ccclass, property } = _decorator;

@ccclass(‘pengZhuangJianCe’)

export class pengZhuangJianCe extends Component {

onLoad() {

    const boxc=this.node.getComponent(BoxCollider2D);

    if(boxc){

        boxc.on(Contact2DType.BEGIN_CONTACT,this.obc,this);

        boxc.on(Contact2DType.END_CONTACT,this.oec,this);

        console.log("碰撞事件监听已注册");

    }

    else{

        console.log("找不到碰着组件");

    }

   

}

private obc(selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null){

console.log(“碰撞开始”);

};

private oec(selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null){

console.log(“碰撞结束”);

};

onDestroy(){

    const boxc=this.node.getComponent(BoxCollider2D);

    boxc.off(Contact2DType.BEGIN_CONTACT,this.obc,this);

    boxc.off(Contact2DType.END_CONTACT,this.oec,this);

}

}

用谷歌浏览器运行后日志文件如下
Init Base: 0.64599609375 ms
game.ts:809 Init Infrastructure: 25.60107421875 ms
debug.ts:66 meshopt wasm decoder initialized
debug.ts:66 [PHYSICS2D]: register box2d.
game.ts:858 Init SubSystem: 139.27880859375 ms
debug.ts:66 Cocos Creator v3.8.5
debug.ts:66 Using custom pipeline: Builtin
game.ts:902 Init Project: 49.426025390625 ms
pengZhuangJianCe.ts:11 碰撞事件监听已注册

并没检测到碰撞,但是两个精灵组件的BoxCollider2D组件的绿框运行时我已经拉叠在一起了,请问大神为什么没有触发碰撞事件?

有大神在么帮忙看一下哈

1、有没有添加RigidBody2D组件
2、有没有勾选Enabled Contact Listener
3、有没有取消Allow Sleep

3点照做后可以检测到了,但是为什么一运行两个精灵组件就自由落体掉下去了?

因为你没有将刚体的重力调成零

改了现在不掉了 :rofl: 但是两个精灵会自己错开不会重叠,我运行前是手动拉重叠的,如何实现重叠呢?不让他们错开?

我觉得你不需要box2d物理系统,box2d是有刚体的,直接用项目裁剪里内置碰撞系统就好了,当然如果你要用box2d可以将碰撞体组件的Sensor勾选上

可以了 :rofl:我是新手学习中,不太懂哈 :rofl:请问项目剪裁里内置的碰撞系统是 要填加哪个组件?代码中通过调用哪个类的哪个方法实现的?

用了这个物理系统RigidBody2D组件就没用了,有一个BoxCollider2D就可以了,其他都差不多

了解了 刚体那个组件适合模拟复杂的物理碰装,谢谢哈