ccc碰撞系统的一个小坑

来源:互联网 发布:java 抽象工厂类 编辑:程序博客网 时间:2024/06/02 06:56

ccc碰撞系统的一个小坑

碰撞系统的官方文档

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

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

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

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

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

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

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

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

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

0 0
原创粉丝点击