【问题标题】:Problems with Mirror Networking in UnityUnity 中的镜像网络问题
【发布时间】:2020-10-18 02:29:33
【问题描述】:

我对 Unity 比较陌生,因此决定制作一款简单的多人游戏。在实现多人游戏方面后,出现了两个主要问题。一,每个加入的人都将拥有他们应该拥有的 n 倍的速度,其中 n 是玩家加入后的玩家数量。第二,我有一个非常简单的相机脚本,如果相机没有绑定到本地播放器,它会禁用它,如果它是,它会启用它。但是这不起作用,因为加入的每个人都无法连接到任何摄像头,并且主持人会在摄像头之间快速切换。

代码如下:

using Mirror;
using UnityEngine;

public class PlayerObject : NetworkBehaviour
{

    public GameObject playerPrefab;
    public KeyCode left;
    public KeyCode right;
    public float speed;
    GameObject myPlayerUnit;

    void Start()
    {
        if (isLocalPlayer == false)
        {
            return;
        }

        //Instantiate(playerPrefab);
        CmdSpawn();
        Debug.Log(myPlayerUnit == null);
    }

    void Update()
    {
        FindObjectOfType<Camera>().enabled = false;
        if (isLocalPlayer == false)
        {
            return;
        }
        CmdSetCamera(true);
        if (Input.GetKey(left))
        {
            CmdMove(false);
        }

        if (Input.GetKey(right))
        {
            CmdMove(true);
        }
    }
    [Command]
    void CmdSpawn()
    {
        GameObject go = Instantiate(playerPrefab);
        myPlayerUnit = go;
        NetworkServer.Spawn(go);
    }

    [Command]
    void CmdSetCamera(bool en)
    {
        if (myPlayerUnit != null)
        {
            myPlayerUnit.GetComponent<Camera>().enabled = en;
        }
    }

    [Command]
    void CmdMove(bool right)
    {
        if (myPlayerUnit == null)
        {
            return;
        }

        if (right)
        {
            myPlayerUnit.transform.Translate(speed, 0, 0);
        }
        else
        {
            myPlayerUnit.transform.Translate(-speed, 0, 0);
        }
    }
}

【问题讨论】:

  • 嗨! Unity 中当前的网络系统将在未来被弃用。也许您可以检查像 Photon 这样的网络的 3rd 方解决方案?
  • @OnionFan Mirror 是围绕 Unity 网络代码构建的第 3 方网络解决方案

标签: c# unity3d unity3d-unet


【解决方案1】:

对于速度,您似乎是根据播放器单元计算它,并且由于播放器单元相互干扰,正如您使用相机所描述的那样,所以您想要做这样的事情

void Start() {
speed = 10f; //you need to define what your speed is or unity will calculate it weirdly
}

对于摄像头问题,您可能应该在预制件中禁用摄像头,并在玩家加入时启用它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    相关资源
    最近更新 更多