同步对象比例从客户端到客户端



我和我的朋友创建了一个2D射击游戏,现在我们正在实现多人游戏功能,但是当玩家模型切换他的面向方向时,我们会遇到困难(玩家正在面对鼠标指针的方向)。当我们尝试使用一个服务器播放器和两个客户端播放器测试游戏时,就会出现问题:

  1. 服务器到客户端:正常工作
  2. 服务器的客户端:正常工作
  3. 客户端的客户:玩家总是面向正确的

    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修复客户端与客户端化。

最新更新