碰撞检测在手机很卡的情况下怎么检测

如图

,手上有一个小动物会向上飞到某个位置,位置是指定的,利用cc.tween来移动,移动的过程利用碰撞检测,在消除区中,碰到和手上小动物一样的就消除,在手机性能好的手机上可以做到全部消除,但是在性能差的手机上就会出现漏撞,碰撞用的是boxCllider,碰撞回调用的是onCollisionEnter,求大神指导下该怎么优化,使其在性能差的手机上能做到全部碰撞。

自己写碰撞

在update里面做碰撞检测,试过了,也会出现漏撞的情况,另外我手里的小动物不是在update里面更新位置,而是利用缓动的函数来移动。

我弄过比这个更多碰撞体的,也没有你这种情况呀。因为没有贴代码,所以我大胆猜测一下你这个漏撞的原因。
1、可能是速度过快导致的,第一帧的位置到第二帧的位置刚好卡过了这个碰撞体的大小,所以漏掉了,如果是这个原因的话,放大碰撞体或者,减慢速度尝试。
2、可能是掉帧导致的,在浏览器打开performance调试一波,看看主要在什么位置消耗过多,着重解决那个地方。
3、这个游戏用碰撞确实方便,如果说最后确定是碰撞检测导致的,但是又无法解决,其实不用碰撞检测也能做…

建议不要用tween,用物理碰撞,用setLinearVelocity的方法添加力去控制小动物移动

移动轨迹有可能会拐弯,另外还需要匀速移动,第一个碰到不一样的会直接返回,但是有了物理之后,碰到之后会将对方碰的向后挪,另外我需要一种效果就是碰到,从他的身上过去,而不是把他撞开。

https://store.cocos.com/app/detail/2568你可能需要这位大佬的插件

确实是卡的原因,因为在性能好的手机或者windows浏览器上面,一切正常,在老旧的机子上面,帧率也低,也卡,速度变慢点确实好点,但我不想影响游戏快感,所以这种是实在没有办法再采用的,另外我在碰撞回调里面输出log,在移动的轨迹上用碰撞来检测,确实有些节点有概率没有发生碰撞。

不用碰撞检测,用什么?大神

1、移动轨迹需要拐弯可以另外施加力拐弯
2、匀速移动也就是移动速度不变对吧?可以设置无摩檫力
3、碰撞会将对方往后挪,那可以把对方设置为静态,就不会往后挪了
4、另外一种效果碰到从他身上过,这点我不太明白意思,我理解为你只要碰撞检测而不需要物理的反弹效果,那可以勾上 isTrigger就可以只做为触发器,没有撞开效果

就没必要用碰撞啊 update里 x或y差值在多少范围内调用cc.Vec2.distance不就解决了吗

不建议用碰撞实现,不然很容易出现斜着射的时候和方块的角插肩而过碰不到的情况,这种比较简单的打砖块一般的做法是发射前计算好会碰撞到什么,后面只播动画就行了,不然后面修bug比写功能的时间都多

当然如果能接受一定角度的漏碰可以固定小动物每帧移动的速度,但是这样手机卡顿的时候移动速度可能变慢,取决于实际需求

漏掉碰撞的原因很可能是每一帧耗时过长,导致下一帧刚体a已经移动到刚体b的后面导致。所以每帧加上个刚体a上一帧和当前帧坐标是否穿过了刚体b。

没有用刚体,没有物理效果,就是单纯的碰撞

就是 你既然用的是tween 那么肯定就知道他的落点位置和经过路径,那就可以直接算出来 一系列路径点,至于多少个,得看你调试。 然后就变成了一道优化算法题。论 如何高效率的判断,那些方块罩住了路径点。。。。。然后逐个消失这个就可以根据时间去判断了