2016-09-01 9 views
0

Итак, я делаю FPS-игру в Unity5, а несколько дней назад я начал смотреть на multiplayer tutorials на официальном сайте Unity.Камера хоста в сетевой игре работает неправильно

Однако, я немного изменил код, чтобы он поместился в 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

Исправлено! Я удалил сценарий 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); 
    } 
} 
0

Ваша камера не должна иметь идентификатор сети. Он используется только местными клиентами для получения перспективы игрового мира, поэтому их не нужно подключать к сети. Каждая камера существует на текущем клиенте. Только для текущего клиента. В каждом игровом экземпляре должно быть 1 камера, работающая на локальном проигрывателе.

Прикрепите простой, не подключенный к сети компонент камеры, к плееру и повторите тест.

+0

Хост отлично работает, но когда клиент перемещает камеру, хост также перемещает камеру. Я думаю, это происходит потому, что клиенты отправляют информацию хосту, и хост интерпретирует его. – AlexINF

+0

Вот почему камеры не должны быть подключены к сети ... Между игроками/сервером не должно быть связи между камерами. У каждого игрока есть камера для его собственного использования, сетевая камера не является хорошей идеей .... – MKougiouris

+0

Да, но как сделать камеру только локально и не передавать данные каким-либо образом? – AlexINF