所以,我在Unity5上做了一个FPS游戏,几天前我开始在Unity的官方网站上查看multiplayer tutorials。
但是,我改变了一些代码以适应FPS,但是在开始这样做时我遇到了问题。客户端的相机移动得很好,但是主机的相机没有移动:它使用客户端的相机来查看,但是他的移动玩家,有点第三人称视角。
所有玩家都拥有相同的代码,并且相机具有已启用本地玩家权限的网络身份。此外,它有这个C#脚本:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class VisionControl : NetworkBehaviour {
void Start () {
Cursor.lockState = CursorLockMode.Locked;
}
void Update () {
if(!isLocalPlayer){
return;
}
transform.Rotate (new Vector3 (-Input.GetAxis ("Mouse Y")*5.0f,0.0f,0.0f));
}
}
答案 0 :(得分:0)
您的相机不应具有网络识别功能。 它仅供本地客户使用,以获得游戏世界的视角,因此不需要联网。 每个摄像头都存在于当前客户端上。仅适用于当前客户端。 每个游戏实例应该运行1个摄像头,即本地播放器。
将简单的非联网相机组件连接到播放器预制件并再次测试。
答案 1 :(得分:0)
固定!我删除了VisionControl脚本并将其放在播放器的移动脚本上:
public override void OnStartLocalPlayer ()
{
if (isLocalPlayer) {
FindObjectOfType<Camera> ().gameObject.transform.position = this.transform.position+new Vector3(0f,0.5f,0f);
FindObjectOfType<Camera>().gameObject.transform.SetParent (this.transform);
}
}