Синхронизация рисования с использованием PUN - PullRequest
1 голос
/ 12 июня 2019

Я реализовал функцию аннотации, которая похожа на рисование в VR.Рисунок - это след Единства, и его форма зависит от его траектории.Вот где настоящая проблема.Мы синхронизируем рисунок в реальном времени, используя PhotonTransformView, который синхронизирует мировое положение следа.Но здесь - это вывод.Синхронизированный чертеж выглядит очень отличающимся от исходного.

Вот код конфигурации синхронизации:

public void SetupSync(int viewId, int controllingPlayer)
{
   if (PhotonNetwork.inRoom)
   {
      photonView = gameObject.AddComponent<PhotonView>();
      photonView.ownershipTransfer = OwnershipOption.Takeover;
      photonView.synchronization = ViewSynchronization.ReliableDeltaCompressed;
      photonView.viewID = viewId;

      photonTransformView = gameObject.AddComponent<PhotonTransformView>();
      photonTransformView.m_PositionModel.SynchronizeEnabled = true;

      photonView.ObservedComponents = new List<Component>();
      photonView.ObservedComponents.Add(photonTransformView);
      photonView.TransferOwnership(controllingPlayer);
   }
}

Как мы можем сделать чертеж в двух системах более похожим?Я видел случаи, когда люди были в состоянии синхронизировать это отлично.Проверьте это .Что они делают?

1 Ответ

1 голос
/ 12 июня 2019

Да, PhotonTransformView не подходит для этого.

вы можете отправлять надежный rpc каждые x миллисекунд со списком точек с момента последнего rpc. Именно тогда он рисуется вживую, и когда рисунок заканчивается, вы кэшируете все определение чертежа в базе данных с учетом идентификатора чертежа. Затем рисунки могут быть извлечены позже игроками, присоединившимися к комнате после того, как розыгрыш был сделан, или даже загружены из списка рисунков или по любой произвольной логике.

В целом вам нужны две разные системы: одна для рисования в реальном времени и одна для рисования.

Bye,

Жан

...