我正在进行多人游戏池游戏,但我面临物理同步问题,如碰撞点,碰撞力。当两个客户端连接到一个房间时,他们通过套接字交换数据而不是发送所有球数据。我只是输入像白色球被击中的力矢量的输入。理论上,对于相同的行动,即在这种情况下,力量应该在游戏中发生相同的反应或效果但在我的游戏中不会发生。
我在连接到房间和房间的一个客户端游戏中应用已知的力量。将该力转移到连接到同一房间的其他客户端游戏,但由于碰撞导致的球的位移/位置不同。
我无法理解为什么会这样?统一物理引擎在不同的设备或平台上的表现会略有不同吗?
我怎样才能实现这个目标?
答案 0 :(得分:1)
Unity物理学是非确定性的。在两个设备上运行物理模拟而不是通过新位置,速度,旋转等进行发送可能会引入由滞后和设备差异引起的不一致,特别是浮点计算不准确。
另见:
http://forum.unity3d.com/threads/is-unity-physics-deterministic.152825/
这个给出了有关模拟中设备差异的示例: http://answers.unity3d.com/questions/46724/deterministic-physics-same-platform.html
在这里,您可以在评论中获得解决方法的说明: http://answers.unity3d.com/questions/475402/is-physicsraycast-deterministic.html