Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PlayerScript
- public class PlayerScript : MonoBehaviour {
- public float speed = 10f;
- private float lastSynchronizationTime = 0f;
- private float syncDelay = 0f;
- private float syncTime = 0f;
- public GameObject test, test2, root;
- List<GameObject> list;
- // Use this for initialization
- void Start () {
- list = new List<GameObject>();
- list.Add(root);
- list.Add(test);
- list.Add(test2);
- }
- // Update is called once per frame
- void Update(){
- if (networkView.isMine){
- InputMovement();
- }
- else{
- SyncedMovement();
- }
- }
- void InputMovement(){
- if (Input.GetKey(KeyCode.W))
- root.rigidbody.MovePosition(root.rigidbody.position + Vector3.forward * speed * Time.deltaTime);
- if (Input.GetKey(KeyCode.S))
- root.rigidbody.MovePosition(root.rigidbody.position - Vector3.forward * speed * Time.deltaTime);
- if (Input.GetKey(KeyCode.D))
- root.rigidbody.MovePosition(root.rigidbody.position + Vector3.right * speed * Time.deltaTime);
- if (Input.GetKey(KeyCode.A))
- root.rigidbody.MovePosition(root.rigidbody.position - Vector3.right * speed * Time.deltaTime);
- JointMotor mtr = test.hingeJoint.motor;
- JointMotor mtr2 = test2.hingeJoint.motor;
- if (Input.GetKeyDown(KeyCode.Q))
- mtr.targetVelocity = 100f;
- test.hingeJoint.motor = mtr;
- if (Input.GetKeyDown(KeyCode.Z))
- mtr2.targetVelocity = 100f;
- test2.hingeJoint.motor = mtr2;
- }
- void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info){
- foreach (GameObject obj in list) {
- GameObject item = obj;
- TestScript script = (TestScript)item.GetComponent(typeof(TestScript));
- script.syncPosition = Vector3.zero;
- script.syncRotation = Quaternion.identity;
- if (stream.isWriting){
- script.syncPosition = item.rigidbody.position;
- stream.Serialize(ref script.syncPosition);
- script.syncRotation = item.rigidbody.rotation;
- stream.Serialize(ref script.syncRotation);
- }
- else{
- stream.Serialize(ref script.syncPosition);
- stream.Serialize(ref script.syncRotation);
- syncTime = 0f;
- syncDelay = Time.time - lastSynchronizationTime;
- lastSynchronizationTime = Time.time;
- script.syncEndPosition = script.syncPosition;
- script.syncStartPosition = item.rigidbody.position;
- script.syncEndRotation = script.syncRotation;
- script.syncStartRotation = item.rigidbody.rotation;
- }
- }
- }
- private void SyncedMovement(){
- syncTime += Time.deltaTime;
- foreach (GameObject obj in list) {
- GameObject item = obj;
- TestScript script = (TestScript)item.GetComponent(typeof(TestScript));
- item.rigidbody.position = Vector3.Lerp(script.syncStartPosition, script.syncEndPosition, syncTime / syncDelay);
- item.rigidbody.rotation = Quaternion.Lerp(script.syncStartRotation, script.syncEndRotation, syncTime / syncDelay);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement