求助碰撞检测功能

自己研究了几个小时,都找不到原因在哪,视图明明已经碰撞了,就是没效果。
两个节点,A添加了刚体、碰撞体积,B只添加碰撞体积。
代码让GTP给写的简单测试,A,B都挂载了脚本。
有大佬帮忙分析一下嘛。
2012bbed3d46cb8a3977e4604cc02066 5d7dbf31b5fb87d5144fb7f0702a17f8

f9041d41b638b3fb2a269782d246174a

import { _decorator, Component, Collider2D, Contact2DType, IPhysics2DContact } from ‘cc’;

const { ccclass, property } = _decorator;

@ccclass(‘CollisionTest’)

export class CollisionTest extends Component {

start() {

    // 获取 A 节点上的 Collider2D 组件

    const collider = this.getComponent(Collider2D);

   

    if (collider) {

        // 监听碰撞开始事件

        collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);

        // 监听碰撞结束事件

        collider.on(Contact2DType.END_CONTACT, this.onEndContact, this);

    }

}

// 碰撞开始时的回调

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

    console.log('碰撞开始:', otherCollider.node.name);

}

// 碰撞结束时的回调

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

    console.log('碰撞结束:', otherCollider.node.name);

}

}

勾选这个试试
图片

1赞

简单的碰撞可以使用相交api

1赞

谢谢大佬,勾选这个拥有刚体的节点会正常触发碰撞了。
但是只有碰撞体的节点还是不行。
检测逻辑必须挂在拥有刚体的节点吗?

推荐你在项目设置的功能裁剪里改用另一个轻量的碰撞系统:Builtin

1赞

像这样子

1赞

感谢大佬! :partying_face:

:flushed: 大佬又遇到一个问题,请教一下。
我做了两个场景,从A场景启动,可以正常加载B场景,并进入。
如果从B场景启动,也可以正常加载A场景,并进入。
就是第一次更换场景都是正常的,但第二次场景更换。
回到上一个场景时,画面就会卡主没反应 ,日志也没有报错。

试试勾选scene的[自动资源释放]看看能不能(资源释放 | Cocos Creator)