Multiplayer movement laggy even with Vector3.Lerp

Hello! I am following a tutorial to make a multiplayer FPS game using Photon . I made the script to send my transforms over the network after Lerping them. However, it is still very laggy. Video. Is there anything wrong with the code? I tried copy pasting the sample code and still had the same problem. Thanks!

using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class PlayerNetMover : Photon.MonoBehaviour {

	[SerializeField] GameObject gun;
	[SerializeField] GameObject gunBody;
	[SerializeField] GameObject gunMag;
	[SerializeField] GameObject gunBlock;
	[SerializeField] Rigidbody gravity;
	Vector3 position;
	Quaternion rotation;
	float smoothing = 1f;
	float health = 100f;

	public delegate void Respawn(float Time);
	public event Respawn RespawnMe;

	// Use this for initialization
	void Start () {

		if (photonView.isMine) {
			gravity.useGravity = true;
			GetComponent<FirstPersonController> ().enabled = true;
			GetComponentInChildren<PlayerShooting> ().enabled = true;
			GetComponentInChildren<PlayerShooting> ().enabled = true;
			foreach (Camera cam in GetComponentsInChildren<Camera>()) {
				cam.enabled = true;

			gun.layer = 10;
			gunBody.layer = 10;
			gunMag.layer = 10;
			gunBlock.layer = 10;
		} else {
	IEnumerator UpdateData()
			transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime * smoothing);
			transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * smoothing);
			yield return null;
	void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)

			position = (Vector3)stream.ReceiveNext();
			rotation = (Quaternion)stream.ReceiveNext();
			health = (float)stream.ReceiveNext();


	public void GetShot(float damage){

		health -= damage;
		if (health <= 0 && photonView.isMine) {

			if(RespawnMe != null){


So the reason the script uses the lerp is to prevent the transforms from just jumping straight to the updated position. If it just set the new position then the movement of networked players would be very stuttery. so the script sets the new target position and the lerp curves towards the new value, but if it moves too slowly it will look laggy. So what’s probably happening is that the smoothing value isn’t high enough. Having looked at the one being used in the tutorial, smoothing is set to 10, yours is set to 1. Since Time.deltaTime is probably really low, it isn’t going to move the transform much at all. The higher smoothing value gives a better result.

More ranting: An issue with lerps is that they never really do things nicely, and even the Unity tutorial people do not use them properly(re: that tutorial). It is possible to change the script to use lerps properly, but since the players will be moving around quite a bit, it probably is fine as is. And I should probably stop my needless rant.