我和我的朋友创建了一个2D射击游戏,现在我们正在实现多人游戏功能,但是当玩家模型切换他的面向方向时,我们会遇到困难(玩家正在面对鼠标指针的方向)。当我们尝试使用一个服务器播放器和两个客户端播放器测试游戏时,就会出现问题:
- 服务器到客户端:正常工作
- 服务器的客户端:正常工作
-
客户端的客户:玩家总是面向正确的
using UnityEngine.Networking; [SyncVar(hook = "serverTurn")] public bool turnState; void Update() { if (!isLocalPlayer) { return; } ... if (Input.mousePosition.x > (Screen.width / 2)) { turnState = true; gameObject.transform.localScale = new Vector3(1, 1, 1); Cmd_ChangeDirection(turnState); serverTurn(turnState); } else if (Input.mousePosition.x < (Screen.width / 2)) { turnState = false; gameObject.transform.localScale = new Vector3(-1, 1, 1); Cmd_ChangeDirection(turnState); serverTurn(turnState); } } [Command] void Cmd_ChangeDirection(bool var) { if (var) { body2d.transform.localScale = new Vector3(1, 1, 1); } else { body2d.transform.localScale = new Vector3(-1, 1, 1); } } void serverTurn(bool state) { if (state) { body2d.transform.localScale = new Vector3(1, 1, 1); } else { body2d.transform.localScale = new Vector3(-1, 1, 1); } }
我们做错了什么,但我们不知道。我们还使玩家握着的枪跟随光标,而且效果很好。旋转没有问题的同步,但是比例没问题,因此我们想知道如何同步对象比例从客户端到客户端。
我们解决了问题。如果对任何人都有用,我们需要使用RPC修复客户端与客户端化。