两个碰撞体碰撞的时候使用回调函数
onCollisionEnter: function (other, self) {
console.log(“碰撞了”);
this.node.destroy();
},
碰撞之后就执行一段代码,然后销毁碰撞体。照理说只能执行一次,但经常性的会打印出两个或三个console.log(“碰撞了”); 好像是还没来得及销毁就一下子就碰了三次,这个怎么解决?
加个bool值,调过了就不调用了
但是我这个代码是用来游戏中吃钱币用的,吃一个钱币加一分然后销毁钱币,现在经常出现吃一个加2分3分的情况,而且钱币很多,一秒中可能吃要好几个,也不能只加一次分啊。
加BOOL也试过,就是在钱币代码里开头设一个变量赋值false;碰撞代码里检测到这个变量是false然后加分,然后把变量改成true,也不行,还是会加2分后变量才变成true。
好像两次代码就同步执行的,没法用BOOL判断执行过一次后不执行第二次,要么两次都不执行,要么两次都执行。
碰撞的逻辑是这样的, 碰撞体根据FLAG彼此组成碰撞序列, 每帧检测这些序列, 若碰撞则回调相关函数.
在碰撞回调函数中立即销毁相关节点, 比如 active = false会回调碰撞组件删除相关碰撞体.
问题只能是你自己的代码问题.
你好好检查下,不会有同步执行的情况的,你这个情况初步看起来像是重复绑定了相同组件引起的,具体还是要你自己检查下了
每个文章都有你的身影,大佬
没事干,给你们捣捣乱
大佬你知道2d的碰撞怎么设置吗?照着文档设置了,碰撞的回调函数都没有起作用
我去,还有这种改变scale就能触发多次碰撞的bug。
真的会每帧检测吗