Cocos2d-x 2.x 项目匹配 iPhoneX 和 iOS11

每年的9月都是一个鬼门关,你永远不知道库克老爷子又能掏出什么宝贝来折腾一下开发者了。本来想着今年总算是例外了,第一时间升级到iOS 11后竟然发现自己做的几个游戏都能正常跑起来,真是活久见。第三方服务竟也没有火急火燎的给我发邮件让赶紧更新sdk。直到年底入了一个iPhoneX真机后,再次感受到了苹果爸爸的爱。 出问题的是一个基于Cocos2d-x 2.1.3 + Box2D的远古项目。简而言之就是在iPhoneX真机上严重掉帧,几乎一秒只有两三帧那种。但是同样一个包,同样一个系统版本号却能在iPhone 7上跑得好好的。 // 因此可以确定是硬件优化相关,跟高层代码逻辑没什么关系了 摊手,隐隐有种直觉觉得可能得升级cocos2d-x到3.x才能搞定,但是仍然抱着...阅读全文

深入探讨Box2D中ghost collision问题解决方案

在使用Box2D引擎时,我们必须牢记它只能对物理世界进行近似的仿真。这其中最根本的原因是帧速受限,而且在pix<->meter换算以及其它乘除法的约算上,会衍生出大量的边界问题。在box2d官方的FAQ页上可以看到这样一条提示:What are the biggest mistakes made by new users?  Expecting Box2D to give pixel perfect results.  这句话应当引起我们相当的注意。 对于“高速刚体穿越碰撞块”以及本文将讨论的“ghost collision”问题,目前还没有一个100%完美的解决方案。有时我真为这种bug感到抓狂,但是细想一下,如果要我自己去设计这样一套引擎,未必能做得更好。 ghost collision问题如下图所示: A块和B块代表固定的地面,蓝色块代...阅读全文