private void CorrectPosition(UserState userState, int commandSnapshotAck) { if (!ownCube || !ownCube.gameObject.activeSelf) // player not respawned yet { return; } ownCube.transform.position = userState.Position; var rotation = ownCube.transform.rotation.eulerAngles.y; foreach (Commands cmd in commands.GetSnapshotUnackedCommands()) { if (!ownCube.isGrounded) { ownCube.SimpleMove(Vector3.zero); } Vector3 move = new Vector3( cmd.GetXDirection() * Time.fixedDeltaTime, 0, cmd.GetZDirection() * Time.fixedDeltaTime ); ownCube.transform.rotation = Quaternion.Euler(0, cmd.Rotation, 0); move = ownCube.transform.TransformDirection(move) * playerSpeed; ownCube.Move(move); } ownCube.transform.rotation = Quaternion.Euler(0, rotation, 0); }