主机在网络游戏中的摄像头无法正常工作
Host's camera on network game isn't working correctly
所以,我正在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));
}
}
您的相机不应该有网络标识。
它仅供本地客户端用来了解游戏世界,因此不需要联网。
每个摄像头仅存在于当前 client.for 当前客户端。
每个游戏实例应该有 1 个摄像头 运行,即本地玩家的摄像头。
将一个简单的非网络摄像头组件附加到您的播放器预制件并再次测试。
已修复!我删除了 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);
}
}
所以,我正在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));
}
}
您的相机不应该有网络标识。 它仅供本地客户端用来了解游戏世界,因此不需要联网。 每个摄像头仅存在于当前 client.for 当前客户端。 每个游戏实例应该有 1 个摄像头 运行,即本地玩家的摄像头。
将一个简单的非网络摄像头组件附加到您的播放器预制件并再次测试。
已修复!我删除了 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);
}
}