我正在Unity中开展实时多人游戏。使用Google Play游戏服务建立两个玩家之间的联系
动作的简单例子 - 从弹弓射击:玩家用手指拉橡皮并射击。唯一重要的初始数据是在玩家释放之前橡胶的位置,因此其坐标在其他设备上发送。在这个射弹获得速度(def get(text):
return re.findall(r"(?:qwe|bvc|kjd)\d+", text)
get('qwe854345 bvc7321 kjd865') >> ['qwe854345', 'bvc7321', 'kjd865']
)并飞行之后。
问题是具有相同的初始数据并且执行相同的代码弹丸可以在一个设备上击中目标而在另一个设备上错过。
答案 0 :(得分:0)
Unity的物理引擎不是有限状态引擎,可能在不同的设备中进行不同的模拟。但是,我仍然以一种简单的方式使用它来进行基于物理的2D游戏并且运行得非常好。这是我遵循的步骤:
1.在每次移动之前,我确保每个物理对象都在网络设备上的相同位置
2.向本地玩家中的玩家对象添加了力量。然后通过网络将力的位置和方向发送到其他设备。然后根据它在其他设备上进行模拟
3.移动完成后(换句话说,所有刚体都停止),仔细检查所有设备上的位置,旋转是否相同。如果没有,请根据移动的本地玩家对齐它们。
重复上述步骤。第三步是100%确保所有设备在所有设备中同步,然后才进行下一步。