Интерполяция RigidBody 2D

Сеть в Unity3D

Интерполяция RigidBody 2D

Сообщение Alex123_asd 11 июл 2018, 15:45

Как правильно сделать интерполяцию игроков с RigidBody 2D? Мне нужно, чтобы игроки могли толкать друг друга, а сейчас они проходят сквозь друг друга, так как я сделал интерполяцию через transform. Дело в том, что если я поменяю интерполяцию через transform.position на rigidbody.position, то игроки после столкновения передают неправильную позицию и тормозят, если будут перемещаться рядом со стенкой. Я не знаю как это исправить.
Код:
Синтаксис:
Используется 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);
        }
    }
 
Alex123_asd
UNец
 
Сообщения: 1
Зарегистрирован: 07 июл 2018, 20:07

Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2