Advertisement
Guest User

PlayerScript

a guest
Feb 4th, 2014
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.04 KB | None | 0 0
  1. PlayerScript
  2.  
  3.  
  4. public class PlayerScript : MonoBehaviour {
  5.    
  6.     public float speed = 10f;
  7.  
  8.     private float lastSynchronizationTime = 0f;
  9.     private float syncDelay = 0f;
  10.     private float syncTime = 0f;
  11.    
  12.     public GameObject test, test2, root;
  13.     List<GameObject> list;
  14.     // Use this for initialization
  15.     void Start () {
  16.         list = new List<GameObject>();
  17.         list.Add(root);
  18.         list.Add(test);
  19.         list.Add(test2);
  20.     }
  21.    
  22.     // Update is called once per frame
  23.     void Update(){
  24.         if (networkView.isMine){
  25.             InputMovement();
  26.         }
  27.         else{
  28.             SyncedMovement();
  29.         }
  30.     }
  31.  
  32.     void InputMovement(){
  33.         if (Input.GetKey(KeyCode.W))
  34.             root.rigidbody.MovePosition(root.rigidbody.position + Vector3.forward * speed * Time.deltaTime);
  35.  
  36.         if (Input.GetKey(KeyCode.S))
  37.             root.rigidbody.MovePosition(root.rigidbody.position - Vector3.forward * speed * Time.deltaTime);
  38.  
  39.         if (Input.GetKey(KeyCode.D))
  40.             root.rigidbody.MovePosition(root.rigidbody.position + Vector3.right * speed * Time.deltaTime);
  41.  
  42.         if (Input.GetKey(KeyCode.A))
  43.             root.rigidbody.MovePosition(root.rigidbody.position - Vector3.right * speed * Time.deltaTime);
  44.        
  45.         JointMotor mtr = test.hingeJoint.motor;
  46.         JointMotor mtr2 = test2.hingeJoint.motor;
  47.         if (Input.GetKeyDown(KeyCode.Q))
  48.             mtr.targetVelocity = 100f;
  49.             test.hingeJoint.motor = mtr;
  50.        
  51.         if (Input.GetKeyDown(KeyCode.Z))
  52.             mtr2.targetVelocity = 100f;
  53.             test2.hingeJoint.motor = mtr2;
  54.     }
  55.    
  56.     void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info){
  57.         foreach (GameObject obj in list) {
  58.             GameObject item = obj;
  59.             TestScript script = (TestScript)item.GetComponent(typeof(TestScript));
  60.             script.syncPosition = Vector3.zero;
  61.             script.syncRotation = Quaternion.identity;
  62.            
  63.             if (stream.isWriting){
  64.                 script.syncPosition = item.rigidbody.position;
  65.                 stream.Serialize(ref script.syncPosition);
  66.                
  67.                 script.syncRotation = item.rigidbody.rotation;
  68.                 stream.Serialize(ref script.syncRotation);
  69.             }
  70.             else{
  71.                 stream.Serialize(ref script.syncPosition);
  72.                 stream.Serialize(ref script.syncRotation);
  73.                
  74.                 syncTime = 0f;
  75.                 syncDelay = Time.time - lastSynchronizationTime;
  76.                 lastSynchronizationTime = Time.time;
  77.          
  78.                 script.syncEndPosition = script.syncPosition;
  79.                 script.syncStartPosition = item.rigidbody.position;
  80.                
  81.                 script.syncEndRotation = script.syncRotation;
  82.                 script.syncStartRotation = item.rigidbody.rotation;
  83.             }
  84.         }
  85.     }
  86.    
  87.     private void SyncedMovement(){
  88.         syncTime += Time.deltaTime;
  89.         foreach (GameObject obj in list) {
  90.             GameObject item = obj;
  91.             TestScript script = (TestScript)item.GetComponent(typeof(TestScript));
  92.             item.rigidbody.position = Vector3.Lerp(script.syncStartPosition, script.syncEndPosition, syncTime / syncDelay);
  93.             item.rigidbody.rotation = Quaternion.Lerp(script.syncStartRotation, script.syncEndRotation, syncTime / syncDelay);
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement