做男人就下100层,pc上满帧,然后人物以某一速度下降,障碍物以某一速度上升,碰撞检测正常。但是某些手机浏览器上,帧率很低,只有10几,那么问题来了,人物还是原来速度下降,障碍物还是原来速度上升,那么由于帧率过低,这帧判断没有碰撞后,下帧已经过了碰撞区域。。。之前有在论坛发帖提问,得出结论是碰撞区域变大一点,但是这样还是不能根本解决问题。本想发布时把帧率设置为30,但是另外有贴说不要这样做。求大神解决这个问题?
尝试记录上一帧状态和下一帧状态,来判断有没有“穿过”。
能不能详细说明下?
方案一:你的最大每帧下降速度不大于你的底板的高度,当然 这个前提你的碰撞是人物的矩形跟地形矩形碰撞检测,那么就算你掉帧,两帧之间的最大位移也不会超过你的地形,这样就归位回去。
方案二:超过地形的条件是你必须出现过在地形之间的空隙,就100层来说,你从100层到99层的条件是 你出现过在100层两个底板的空隙之间,否则则视为你从未离开过地形,那么此时就算掉帧,你的y坐标掉到下一层,但是由于检测到你没有离开过上一层的地形,那么归位。
目前我的跑酷游戏这样处理的,你写好算法之后可以用
cc.Director:getInstance():setAnimationInterval(0.032)(0.032是两帧之间的间隔)来模拟掉帧测试
出现这种bug的原因是,游戏卡时,两帧之间的时间过长,物理 引擎用了这个过长的时间来计算,导致穿越。
所以解决办法是人为控制物理帧频,不要用自动,你可以把物理帧频控制放到每帧 执行里,然后
固定多少毫秒执行一次。
真机用Release版本,另外打开armv7a
通过上一帧与当前帧的坐标来判断是否穿透障碍物
这个办法很6 我之前遇到过类似的问题 就是用这种方案处理的