mirror of
https://github.com/FriendshipIsEpic/FiE-Game.git
synced 2024-11-25 06:58:00 +01:00
54 lines
No EOL
1.7 KiB
C#
54 lines
No EOL
1.7 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
[RequireComponent(typeof(PhotonView))]
|
|
public class SmoothSyncMovement : Photon.MonoBehaviour, IPunObservable
|
|
{
|
|
public float SmoothingDelay = 5;
|
|
public void Awake()
|
|
{
|
|
bool observed = false;
|
|
foreach (Component observedComponent in this.photonView.ObservedComponents)
|
|
{
|
|
if (observedComponent == this)
|
|
{
|
|
observed = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!observed)
|
|
{
|
|
Debug.LogWarning(this + " is not observed by this object's photonView! OnPhotonSerializeView() in this class won't be used.");
|
|
}
|
|
}
|
|
|
|
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
|
|
{
|
|
if (stream.isWriting)
|
|
{
|
|
//We own this player: send the others our data
|
|
stream.SendNext(transform.position);
|
|
stream.SendNext(transform.rotation);
|
|
}
|
|
else
|
|
{
|
|
//Network player, receive data
|
|
correctPlayerPos = (Vector3)stream.ReceiveNext();
|
|
correctPlayerRot = (Quaternion)stream.ReceiveNext();
|
|
}
|
|
}
|
|
|
|
private Vector3 correctPlayerPos = Vector3.zero; //We lerp towards this
|
|
private Quaternion correctPlayerRot = Quaternion.identity; //We lerp towards this
|
|
|
|
public void Update()
|
|
{
|
|
if (!photonView.isMine)
|
|
{
|
|
//Update remote player (smooth this, this looks good, at the cost of some accuracy)
|
|
transform.position = Vector3.Lerp(transform.position, correctPlayerPos, Time.deltaTime * this.SmoothingDelay);
|
|
transform.rotation = Quaternion.Lerp(transform.rotation, correctPlayerRot, Time.deltaTime * this.SmoothingDelay);
|
|
}
|
|
}
|
|
|
|
} |