OnSerializeNetworkView не понимаю в чем ошибка.

Сеть в Unity3D

OnSerializeNetworkView не понимаю в чем ошибка.

Сообщение zombiq 23 июн 2017, 18:38

Разбираюсь с сетью в юнити, передаю данные о игроке на основе статьи https://habrahabr.ru/post/211202/.
Немного изменил код, для клиента создается игрок с FPS контроллером и камерой (Player), для остальных просто пустышки (otherPlayer), содержащие скрипт синхронизации. Объекты создаю не через Network, а локально, для каждого игрока. viewID присваиваю сразу при создании. Юнити не ругается ни на что, как на сервере, так и на клиентах.
Ошибка:
Клиент принимает данные сервера о перемещении его игрока и перемещает его у себя, но сервер не принимает данные клиентов.
Сижу парюсь уже два дня, объясните пожалуйста.
Полный код скрипта синхронизации:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

[RequireComponent( typeof(Rigidbody) )]

public class PlayerNetwork : MonoBehaviour
{
                public float lastSynchronizationTime;
                public float syncDelay = 0f;
                public float syncTime = 0f;
                public Vector3 syncStartPosition = Vector3.zero;
                public Vector3 syncEndPosition = Vector3.zero;
                public Quaternion syncStartRotation = Quaternion.identity;
                public Quaternion syncEndRotation = Quaternion.identity;
                public NetworkView netView;
                public Rigidbody rigidbody;

                void Start ()
                {
                                netView.observed = this;
                                netView.stateSynchronization = NetworkStateSynchronization.Unreliable;
                                lastSynchronizationTime = Time.time;
                }
               
                void FixedUpdate ()
                {
                                if (this.tag == "otherPlayer") {
                                                syncTime += Time.fixedDeltaTime;
                                                rigidbody.position = Vector3.Lerp (syncStartPosition, syncEndPosition, syncTime / syncDelay);
                                                rigidbody.rotation = Quaternion.Lerp (syncStartRotation, syncEndRotation, syncTime / syncDelay);
                                }
                }
       
                void OnSerializeNetworkView (BitStream stream, NetworkMessageInfo info)
                {
                                Vector3 syncPosition = Vector3.zero;
                                Vector3 syncVelocity = Vector3.zero;
                                Quaternion syncRotation = Quaternion.identity;
                                if (stream.isWriting) {
                                                if (this.tag == "Player") {
                                                                syncPosition = rigidbody.position;
                                                                stream.Serialize (ref syncPosition);
                       
                                                                syncVelocity = rigidbody.velocity;
                                                                stream.Serialize (ref syncVelocity);
                       
                                                                syncRotation = rigidbody.rotation;
                                                                stream.Serialize (ref syncRotation);
                                                }
                                } else {
                                                stream.Serialize (ref syncPosition);
                                                stream.Serialize (ref syncVelocity);
                                                stream.Serialize (ref syncRotation);
                       
                                                syncTime = 0f;
                                                syncDelay = Time.time - lastSynchronizationTime;
                                                lastSynchronizationTime = Time.time;
                       
                                                syncEndPosition = syncPosition + syncVelocity * syncDelay;
                                                syncStartPosition = rigidbody.position;
                       
                                                syncEndRotation = syncRotation;
                                                syncStartRotation = rigidbody.rotation;
                                }
                }

}
zombiq
UNец
 
Сообщения: 1
Зарегистрирован: 23 июн 2017, 18:16

Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2