物理引擎(包括碰撞)的计算具有随机性

原因:

一、每一帧的时间并不是严格相等

二、浮点数计算不是完全准确(两个浮点数运算,结果不可重复)

影响

[UE4]碰撞的随机性-LMLPHP

在左边窗口(服务器端)打几发子弹把其中3个立方体的位置打偏,如图所示:由于碰撞有随机性,所以左右窗口的立方体位置是完全不一样的。

结论:两个客户端无法通过物理运算来保持一致。

解决方法:

让立方体进行运动同步

[UE4]碰撞的随机性-LMLPHP

如果是蓝图则是“Replicate Movement”勾选上就可以进行运动同步了。

[UE4]碰撞的随机性-LMLPHP

[UE4]碰撞的随机性-LMLPHP

可以看到立方体被打飞后的位置(包括选择角度)都是一模一样的。

04-18 11:42