2016-08-07 3 views
0

У меня есть куб в моей игре, который зарывается между его начальным состоянием и большим состоянием, глядя на другой объект. Это отлично работает в одиночном проигрывателе, но когда я переношу его в многопользовательский режим, я не могу найти нужную комбинацию параметров, чтобы он обновлялся на обоих клиентах (один из них был хостом). Каждый игрок может активировать свой собственный куб, но не представлен на другом компьютере. Сценарий находится на кнопке, которая имеет идентификатор сети, и она обращается к кубу, который также имеет сетевой идентификатор и сетевое преобразование.Синхронизация неинтерфейсного преобразования объекта, которое изменяется с другого взаимодействующего объекта в Unet/Unity 5?

Single шифр игрока:

void Update() { 

    if (Camera.main != null) { 
     RaycastHit hit; 
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
     if (Physics.Raycast(ray, out hit)) { 
      if (hit.collider.gameObject == gameObject && hit.distance < 5) { 
       PlatformScale(); 
      } else { 
       PlatformReset(); 
      } 
     } 
    } 
} 

void PlatformScale() { 
    platform.transform.localScale = Vector3.Lerp (platform.transform.localScale, platformScale, 3f * Time.deltaTime); 
} 
void PlatformReset() { 
    platform.transform.localScale = Vector3.Lerp (platform.transform.localScale, platformStartingScale, 3f * Time.deltaTime); 
} 

ответ

0

Только в случае, если вы еще не прочитали это, я настоятельно рекомендую идти через Unity Networking Manual

Я предлагаю использовать [Command] или [ClientRpc] (в зависимости от того, какие объекты находятся на сервере и которые являются локальными), чтобы задерживать весы.

Хотя, возможно, они вам не нужны, поскольку у вас есть сетевые преобразования. Удостоверьтесь, что у вас есть правильно spawned/instantiated куб в сети.

Edit: Чтобы вызвать куб по сети ...

using UnityEngine; 
using UnityEngine.Networking; 

public class CubeStuff : NetworkBehaviour { 

    public GameObject cubePrefab; 
    public GameObject cube; 
    public override void OnStartServer() { 
     GameObject cubeSpawn = (GameObject)Instantiate(cubePrefab, transform.position, transform.rotation); 
     NetworkServer.Spawn(cubePrefab); 
    } 
} 

ОДНАКО: Согласно документации, вам не нужно к сети икры объекта так долго, как это in the scene, как это обрабатывается для вы - так что ваша проблема лежит где-то в другом месте.

У меня недостаточно информации, чтобы действительно узнать, что у вас есть. Ваши кнопки и пользовательский интерфейс могут быть объектом на сцене, просто убедитесь, что у них есть локальный контроль пользователя, и что их ссылки OnClick() вызывают функции [Command].

+0

Объект не создан, не должен ли он работать? Я просто на месте. Я прочитал руководство, но я не могу найти ничего, что связано с обновлением преобразований на объектах, отличных от игроков, которые контролируются другим устройством. Если у вас есть прямая, которая поможет мне, это будет здорово. –

+0

Он должен работать, просто создавая его ... Im на мобильном, так жаль ужасное форматирование. Можете ли вы попробовать добавить пустой сценарий в сцену, добавить к нему сценарий внутри: 'public GameObject cubePrefab; public override void OnStartServer() {NetworkServer.Spawn (cubePrefab); } 'Вам нужно будет сделать сборку своего куба и зарегистрировать этот сборник для нерегулярных объектов вашего сетевого менеджера и перетащить его в слот cubePrefab в инспекторе для сценария выше. Попробуйте взаимодействовать с вашим кубом и вернитесь ко мне. Если вы можете подтвердить, что это не работает, я смогу помочь больше. – Wafer

+0

Привет, я не смогу протестировать пару часов, спасибо за помощь. Просто у меня есть идея, почему должен быть создан объект, чтобы его можно было изменить в игре, и мне нужно будет переместить скрипт, который находится на отдельной кнопке на плеер, или этот объект также должен быть порожден? –

0

Итак, после долгих поисков я узнал, что вы не можете синхронизировать localScale в Unet, это выдающаяся ошибка. Я изменил свой код на использование позиции вместо локального масштаба. Спасибо за помощь.

Смежные вопросы