Stardog

Unity NetworkTransform - manually syncing

Jul 17th, 2015
540
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.83 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.Networking;
  4.  
  5. public class Player_Sync_Pos : NetworkBehaviour {
  6.  
  7.     [Header("Options")]
  8.     public float smoothSpeed = 10f;
  9.  
  10.     [SyncVar]
  11.     private Vector3 mostRecentPos;
  12.     private Vector3 prevPos;
  13.  
  14.     void FixedUpdate()
  15.     {
  16.         if (isLocalPlayer)
  17.         {
  18.             // If moved, send my data to server
  19.             if (prevPos != transform.position)
  20.             {
  21.                 // Send position to server (function runs server-side)
  22.                 CmdSendDataToServer(transform.position);
  23.  
  24.                 prevPos = transform.position;
  25.             }
  26.         }
  27.         else
  28.         {
  29.             // Apply position to other players (mostRecentPos read from Server vis SyncVar)
  30.             transform.position = Vector3.Lerp(transform.position, mostRecentPos, smoothSpeed * Time.deltaTime);
  31.         }
  32.     }
  33.  
  34.     [Command]
  35.     void CmdSendDataToServer(Vector3 pos)
  36.     {
  37.         mostRecentPos = pos;
  38.     }
  39.  
  40. }
Add Comment
Please, Sign In to add comment