Synchronizing Third Person Character
Options
Hello Guys! I am making a multiplayer third person game. I have a character prefab and it consists of an empty game object with the actual character and third person camera as children. I am able to instantiate it for all players but it won't synch correctly. I am using the code below for synchronizing the character but I see only my character in the environment and not the other and when I inspect it in the inspector, its actually there but not at the spawn position. Once i got it to work but it was not synchronizing correctly, animations were looking all right but no position synchronization. Any help would be much appreciated!
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Network_Character : Photon.MonoBehaviour { Vector3 realPosition; Quaternion realRotation = Quaternion.identity; Animator anim; // Use this for initialization void Start () { anim = GetComponentInChildren<Animator> (); } // Update is called once per frame void Update () { if (photonView.isMine) { // do nothing } else { transform.position = Vector3.Lerp (transform.position, realPosition, Time.deltaTime * 5f); transform.rotation = Quaternion.Lerp (transform.rotation, realRotation, Time.deltaTime * 5f); } } public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info){ Debug.Log ("On Photon"); if (stream.isWriting) { // This is our player sending data so we need to send data to network stream.SendNext (transform.position); stream.SendNext (transform.rotation); stream.SendNext (anim.GetFloat("Forward")); stream.SendNext (anim.GetFloat ("Turn")); stream.SendNext (anim.GetFloat ("Jump")); stream.SendNext (anim.GetFloat ("JumpLeg")); stream.SendNext (anim.GetBool("Crouch")); stream.SendNext (anim.GetBool("OnGround")); } else { // This is someone else's so we need to update their postion and rotation to our player realPosition = (Vector3)stream.ReceiveNext(); realRotation = (Quaternion)stream.ReceiveNext (); anim.SetFloat ("Forward", (float)stream.ReceiveNext()); anim.SetFloat ("Turn", (float)stream.ReceiveNext()); anim.SetFloat ("Jump", (float)stream.ReceiveNext()); anim.SetFloat ("JumpLeg", (float)stream.ReceiveNext()); anim.SetBool ("Crouch", (bool)stream.ReceiveNext()); anim.SetBool ("OnGround", (bool)stream.ReceiveNext()); } } }
0