ccc碰撞系统的一个小坑

    xiaoxiao2021-03-25  143

    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的分组吧,说不定你就是被这个坑了.

    转载请注明原文地址: https://ju.6miu.com/read-4886.html

    最新回复(0)