Search Unity

Question Temporarily Disable Interpolation for ClientNetworkTransform

Discussion in 'Netcode for GameObjects' started by Draener, Mar 30, 2022.

  1. Draener

    Draener

    Joined:
    Dec 17, 2021
    Posts:
    7
    So I'm working on a project where the player object is controlled by a ClientNetworkTransform (and are client authoritative) and everything else is controlled by the server with a regular NetworkTransform.

    I'm trying to figure out how I can move a player over a large distance without interpolation of their position being done on any of the other clients.

    I have tried clientNetworkTransform.Teleport(position, rotation, Vector3.one); on the owning player object.
    I have tried setting clientNetworkTransform.Interpolate = false on all the clients

    I'm not sure what I am missing. Thanks in advance
     
  2. Draener

    Draener

    Joined:
    Dec 17, 2021
    Posts:
    7
    Anyone have a work around If I can't disable interpolation at runtime?
     
  3. Draener

    Draener

    Joined:
    Dec 17, 2021
    Posts:
    7
    So apparently this is a known issue
    https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/issues/1863

    Code (CSharp):
    1. public static class NetworkTransformExtensions
    2. {
    3.     public static void PatchedTeleport(this NetworkTransform self, Vector3 newPosition, Quaternion newRotation, Vector3 newScale)
    4.     {
    5.         self.Teleport(newPosition, newRotation, newScale);
    6.         self.StartCoroutine(PreventTeleportingStateFromBeingOverriddenAndClampInterpolation());
    7.  
    8.         IEnumerator PreventTeleportingStateFromBeingOverriddenAndClampInterpolation()
    9.         {
    10.             self.enabled = false;
    11.  
    12.             yield return null;
    13.  
    14.             self.Teleport(newPosition, newRotation, newScale);
    15.  
    16.             yield return new WaitForSecondsRealtime(0.5f);
    17.  
    18.             self.enabled = true;
    19.         }
    20.     }
    21. }
    A work around