【问题标题】:How to synchronize Unity physics between devices in real time? (Google Play Games plugin for Unity)如何在设备之间实时同步 Unity 物理? (Unity 的 Google Play 游戏插件)
【发布时间】:2018-02-03 20:48:08
【问题描述】:

我正在使用 Unity 开发实时多人游戏。两个玩家之间的连接是通过 Google Play 游戏服务建立的。
动作的简单示例 - 从弹弓射击:玩家用手指拉动橡胶并进行射击。唯一重要的初始数据是玩家释放橡胶之前的位置,因此它的坐标会发送到其他设备上。在此弹丸获得速度(RigidBody2D.velocity = new Vector2(...))并飞行后。

问题是具有相同的初始数据并执行相同的代码弹丸可能会在一台设备上击中目标而在另一台设备上未命中。

【问题讨论】:

  • 你不能只模拟本地玩家的射击并同步位置吗?
  • 为什么不试试 UNET,多人游戏更容易使用

标签: c# unity3d google-play-services rtmp


【解决方案1】:

Unity 的物理引擎不是有限状态引擎,并且可能在不同的设备上进行不同的模拟。但是,我仍然以简单的方式将它用于基于物理的 2d 游戏,并且效果很好。这是我遵循的步骤:
1. 在每次移动之前,我确保每个物理对象都在联网设备上的相同位置。
2.在本地播放器中添加了对播放器对象的强制。然后通过网络将力的位置和方向发送到其他设备。然后根据它在其他设备上模拟。
3.移动完成后(也就是说,所有刚体都停止了),仔细检查所有设备上的位置,旋转是否相同。如果没有,请根据进行移动的本地玩家对齐它们。

重复上述步骤。第三步是在我采取下一步行动之前 100% 确保所有设备中的所有对象都同步。

【讨论】:

    猜你喜欢
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2018-01-31
    • 2021-10-07
    • 1970-01-01
    • 2014-07-31
    • 2016-05-08
    相关资源
    最近更新 更多