是这样的,之前做过一个demo
客户端写个netupdate(dt) 函数替换原本update(dt) 函数.
dt则是固定的1/30 或者1/40秒.
依次来保证所有客户端都是同步的,也就是服务端来控制客户端每帧计算.
但是我看到物理引擎似乎没有提供这种方式,我也不知道怎么重写update方法
文档有一段这样的描述
设置物理步长
物理系统是按照一个固定的步长来更新物理世界的,默认这个步长即是你的游戏的帧率:1/framerate。但是有的游戏可能会不希望按照这么高的频率来更新物理世界,毕竟这个操作是比较消耗时间的,那么你可以通过降低步长来达到这个效果。
var manager = cc.director.getPhysicsManager();
// 开启物理步长的设置
manager.enabledAccumulator = true;
// 物理步长,默认 FIXED_TIME_STEP 是 1/60
manager.FIXED_TIME_STEP = 1/30;
// 每次更新物理系统处理速度的迭代次数,默认为 10
manager.VELOCITY_ITERATIONS = 8;
// 每次更新物理系统处理位置的迭代次数,默认为 10
manager.POSITION_ITERATIONS = 8;
注意:降低物理步长和各个属性的迭代次数,都会降低物理的检测频率,所以会更有可能发生刚体穿透的情况,使用时需要考虑到这个情况。
但是实际上我不需要设置步长这些东西 因为 update 改由服务端来推送消息来控制时长了.
请问应该怎么实现物理引擎的帧同步呢,不用物理引擎的话 一些效果实现得不好.