Начал осваивать Фотон (Cloud), для синхронизации движения-вешаю на объект-PhotonView, изначально сетевые объекты двигались очень дергано, нашел такой скрипт для сглаживания движения (интерполяцией):
ublic class PersonNetwork : Photon.MonoBehaviour
{
public Vector3 correctPlayerPos = Vector3.zero; //We lerp towards this
public Quaternion correctPlayerRot = Quaternion.identity; //We lerp towards this
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();
}
}
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 * 1);
transform.rotation = Quaternion.Lerp(transform.rotation, correctPlayerRot, Time.deltaTime * 1);
}
}
}
Однако назвать этот вариант оптимальным-нельзя. Например если объект которым я управляю у меня останавливается, то у других клиентов за счет интерполяции-продолжает еще некоторое время двигаться (зависит от множителя "плавности"). +все-же присутствуют не большие подергивания на больших скоростях движения. Может ли кто-то подсказать как улучшить синхронизацию движения ?