总结下物理引擎的坑

用Creator 2.12做了个基于物理的游戏,准备上facebook instantgame,遇到了几个问题

  1. 锁定帧率失效:在144hz的显示器上,设定帧率60,但是运行会去到134 FPS
  • 解决:
    – 升级2.13
    – 把锁定帧率的调用放在onLoad里面
  1. 50x50,密度1的物体,居然质量不为2.5kg
  • 原因:box2d的非圆形面积计算,是基于多边形的,就算矩形也一样,会根据定点拆分成多个三角形然后累计每个三角形的面积
  • 待解决
  1. 镜头跟随会有重影
  • 解决:设置镜头跟随的调用放到lateUpdate
  1. 不同帧率下,持续施力会有结果差异
  • 解决:设置固定帧

其他问题待续…

3赞

这个刷新率哪个手机可以达到呀?

感谢分享,正好在做物理的

PC上就有可能啊,因为FB的游戏PC上也可以打开的

我的显示器200hz,不同设备不同屏幕刷新率都不同,按说这个不应该影响游戏啊。不然要怎么控制

写的很好!

刷新率导致的帧率无法锁定,是引擎的bug,这个升级引擎就行。

我的场景是,玩家持续按着就持续施力,这个是施力的调用是在lateUpdate中按帧调用的,所以会遇到帧率低的时候施力次数少了,导致效果不一致的情况。

如果有类似unity那种fixedUpdate的实现就好处理多了。。。

1赞

打包到手机上 设置帧率 也是用 cc.game.setFrameRate(60)吗? 写到onload里面
我目前用的也是 2.1.2 写了这个 打包出来 帧率还是会变 ,我升级一下试试