ccc碰撞系统的一个小坑

ccc碰撞系统的一个小坑

碰撞系统的官方文档

公司用ccc引擎写一个H5的捕鱼游戏,子弹和鱼的碰撞发生了一些问题,只有非常低的几率会触发碰撞回调,大多数碰撞都被无视了.

我检查了所有的子弹和鱼的预制资源,都已经正确分组,并且加了碰撞组件,碰撞框也正常,组件中也都有回调方法,并且屏蔽了方法中所有的代码,只是在碰撞时会打印一下,但依旧是不触发.

就当我绝望的一遍遍尝试的时候,突然发现,只有在鱼添加到场景之前,添加到场景的子弹才会和鱼发生碰撞,而之后添加的子弹就不会发生碰撞.

于是我立即就想到了node组件中的group.

//原来的group中的顺序
group0: fish
group1: bullet
//修改后的
group0: bullet
group1: fish

修改后,果然所有的子弹和鱼都能正常发生碰撞了.

这个问题是不是很眼熟?js中用for(let i in array){}时,如果逻辑顺序不对,很容易就发生这种问题,新加入的不会被遍历到,同理还有c++中的容器.

我猜想,ccc中的碰撞系统可能就是用类似的语句进行遍历,而遍历的顺序就靠node组件的group来控制,所以,才会发生上面这种情况.

所以,如果你用ccc碰撞系统时,发现其他一切都正常,但碰撞就是不会触发的时候,检查一下你group的分组吧,说不定你就是被这个坑了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值