Files
2026-02-21 16:45:37 +08:00

48 lines
1.1 KiB
C#

using Photon;
using UnityEngine;
[RequireComponent(typeof(PhotonView))]
public class CubeExtra : Photon.MonoBehaviour, IPunObservable
{
[Range(0.9f, 1.1f)]
public float Factor = 0.98f;
private Vector3 latestCorrectPos = Vector3.zero;
private Vector3 movementVector = Vector3.zero;
private Vector3 errorVector = Vector3.zero;
private double lastTime;
public void Awake()
{
latestCorrectPos = base.transform.position;
}
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
Vector3 obj = base.transform.localPosition;
stream.Serialize(ref obj);
return;
}
Vector3 obj2 = Vector3.zero;
stream.Serialize(ref obj2);
double num = info.timestamp - lastTime;
lastTime = info.timestamp;
movementVector = (obj2 - latestCorrectPos) / (float)num;
errorVector = (obj2 - base.transform.localPosition) / (float)num;
latestCorrectPos = obj2;
}
public void Update()
{
if (!base.photonView.isMine)
{
base.transform.localPosition += (movementVector + errorVector) * Factor * Time.deltaTime;
}
}
}