Код:
Синтаксис:
Используется csharp
// Это в Update
if (netView.isMine) {...}
else
// Интерполяция
{
SynTime += Time.fixedDeltaTime;
transform.position = Vector3.Lerp(SynStartPos, SynEndPos, SynTime / SynDelay);
transform.rotation = Quaternion.Lerp(SynStartAngle, SynEndAngle, SynTime / SynDelay);
}
// Синхронизация
void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
{
Vector3 SynPos = Vector3.zero;
Quaternion SynAngle = Quaternion.identity;
if (!stream.isWriting)
{
// Чтение
stream.Serialize(ref SynPos);
stream.Serialize(ref SynAngle);
// Расчеты для интерполяции
SynTime = 0;
SynDelay = Time.time - LastSynTime;
LastSynTime = Time.time;
SynStartPos = transform.position;
SynEndPos = SynPos;
SynStartAngle = transform.rotation;
SynEndAngle = SynAngle;
}
else
{
// Запись
SynPos = transform.position;
stream.Serialize(ref SynPos);
SynAngle = transform.rotation;
stream.Serialize(ref SynAngle);
}
}
if (netView.isMine) {...}
else
// Интерполяция
{
SynTime += Time.fixedDeltaTime;
transform.position = Vector3.Lerp(SynStartPos, SynEndPos, SynTime / SynDelay);
transform.rotation = Quaternion.Lerp(SynStartAngle, SynEndAngle, SynTime / SynDelay);
}
// Синхронизация
void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
{
Vector3 SynPos = Vector3.zero;
Quaternion SynAngle = Quaternion.identity;
if (!stream.isWriting)
{
// Чтение
stream.Serialize(ref SynPos);
stream.Serialize(ref SynAngle);
// Расчеты для интерполяции
SynTime = 0;
SynDelay = Time.time - LastSynTime;
LastSynTime = Time.time;
SynStartPos = transform.position;
SynEndPos = SynPos;
SynStartAngle = transform.rotation;
SynEndAngle = SynAngle;
}
else
{
// Запись
SynPos = transform.position;
stream.Serialize(ref SynPos);
SynAngle = transform.rotation;
stream.Serialize(ref SynAngle);
}
}