- Home /
Question by
ManitoBart · Dec 11, 2014 at 04:06 PM ·
animationnetworkingphoton
how to synchronise an animation which is in a second animation layers, over the network with Photon?
I ask this question because all the animations of my character are synchronized exepted one which is in an other animation layer in animator. This animation is barely played one in ten.
this is my code in case I miss something :
using UnityEngine; using System.Collections;
[RequireComponent(typeof (Animator))]
public class NetworkCharacter : Photon.MonoBehaviour {
Vector3 realPosition = Vector3.zero;
Quaternion realRotation = Quaternion.identity;
Animator anim;
// Use this for initialization
void Start () {
anim = gameObject.GetComponentInChildren<Animator> ();
if (anim == null){
Debug.LogError ("Omg, I forgot to put an Animator component on this Character prefab !");
}
}
// Update is called once per frame
void Update () {
if (photonView.isMine) {
// Do nothing -- the script joueur ...ismoving us
} else {
transform.position = Vector3.Lerp(transform.position, realPosition, 0.1f);
transform.rotation = Quaternion.Lerp(transform.rotation, realRotation ,0.1f);
}
}
public void OnPhotonSerializeView (PhotonStream stream, PhotonMessageInfo info){
if (stream.isWriting) {
// C'est notre joueur. Nous devons envoyer notre position sur le réseau
stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
stream.SendNext(anim.GetFloat("Speed"));
stream.SendNext(anim.GetFloat("Direction"));
stream.SendNext(anim.GetBool("Walk"));
stream.SendNext(anim.GetBool("Couch"));
stream.SendNext(anim.GetBool("TurnLeft"));
stream.SendNext(anim.GetBool("TurnRight"));
stream.SendNext(anim.GetBool("Fire1"));
stream.SendNext(anim.GetBool("Reload"));
stream.SendNext(anim.GetBool("Jump"));
stream.SendNext(anim.GetBool("JumpDown"));
} else {
//c'est un autre joueur. Nous devons recevoir sa position sur le réseau
//Ceci toutes les mill isecondes et MAJ notre version de ce joueur
realPosition = (Vector3)stream.ReceiveNext();
realRotation = (Quaternion)stream.ReceiveNext();
anim.SetFloat("Speed",(float)stream.ReceiveNext());
anim.SetFloat("Direction",(float)stream.ReceiveNext());
anim.SetBool("Walk",(bool)stream.ReceiveNext());
anim.SetBool("Couch",(bool)stream.ReceiveNext());
anim.SetBool("TurnLeft",(bool)stream.ReceiveNext());
anim.SetBool("TurnRight",(bool)stream.ReceiveNext());
anim.SetBool("Fire1",(bool)stream.ReceiveNext());
anim.SetBool("Reload",(bool)stream.ReceiveNext());
anim.SetBool("Jump",(bool)stream.ReceiveNext());
anim.SetBool("JumpDown",(bool)stream.ReceiveNext());
}
}
}
Comment