cocos create碰撞组件不生效问题

今天在学习cocos的时候遇到了一个极为坑爹的问题,按照cocos官网文档上写的碰撞组件在碰撞时不会触发我们的onCollisionEnter方法,这个方法里只写了一个console.log方法,不存在方法内部报错导致不显示的问题,在搜索的时候有位博主给出了一些检查意见:Cocos 物理碰撞不触发的坑,大体上需要检查以下内容:

  1. 该资源除了添加碰撞组件外还需要添加刚体组件,否则不会触发碰撞回调函数

在这里插入图片描述
2. 检查是否开启全局刚体碰撞检测,该检测项是默认关闭的

// 虽然觉得会走到这一步的人这里应该都没问题,但还是加一下
cc.director.getCollisionManager().enabled = true;
cc.director.getPhysicsManager().enabled = true;
  1. 如果你在开启全局刚体碰撞检测时使用的是cc.director.getPhysicsManager().enabled = true;,那么在添加回调函数时应该用另一套回调
	// 只在两个碰撞体开始接触时被调用一次
    onBeginContact: function (contact, selfCollider, otherCollider) {
      console.log('有人碰到了玩家');
    },

    // 只在两个碰撞体结束接触时被调用一次
    onEndContact: function (contact, selfCollider, otherCollider) {
    },

    // 每次将要处理碰撞体接触逻辑时被调用
    onPreSolve: function (contact, selfCollider, otherCollider) {
        
    },
    // 每次处理完碰撞体接触逻辑时被调用
    onPostSolve: function (contact, selfCollider, otherCollider) {
        
    }

这些代码应该都是在需要碰撞的刚体添加的脚本组件里,而不是在场景内加载(我真的在场景里试过写碰撞回调),但开启碰撞是可以写在场景配置里的
但以上都没有真正解决问题,我决定再仔细看一遍cocos的官方文档,直到我看到这么一句话:需要注意的是,一个节点上的碰撞组件,无论如何都是不会相互进行碰撞检测的。
在这里插入图片描述
当场裂开,马上去检查分组:两个组件的分组都是一样的stone,
在这里插入图片描述
把其中一个分组换成其他名字之后就好了
在这里插入图片描述
所以总结一下,有官方文档的情况下遇到问题还是多仔细看看官方文档,特别是在官方文档写得这么良心的情况下
顺便附一个cocos的官方API官方社区

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值