【发布时间】: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