title: Smooth Follow script not working as I need it to. How do I fix this?
body: <p>I followed the Unity's Roll-A-Ball tutorial to get my ball moving, and the camera as well. I found the camera was not working very well so I used Unity's smooth follow script to get it moving...</p>
  
  <pre><code>using UnityEngine;
  
  namespace UnityStandardAssets.Utility
  {
      public class SmoothFollow : MonoBehaviour
      {
  
          // The target we are following
          [SerializeField]
          private Transform target;
          // The distance in the x-z plane to the target
          [SerializeField]
          private float distance = 10.0f;
          // the height we want the camera to be above the target
          [SerializeField]
          private float height = 5.0f;
  
          [SerializeField]
          private float rotationDamping;
          [SerializeField]
          private float heightDamping;
  
          // Use this for initialization
          void Start() { }
  
          // Update is called once per frame
          void LateUpdate()
          {
              // Early out if we don't have a target
              if (!target)
                  return;
  
              // Calculate the current rotation angles
              var wantedRotationAngle = target.eulerAngles.y;
              var wantedHeight = target.position.y + height;
  
              var currentRotationAngle = transform.eulerAngles.y;
              var currentHeight = transform.position.y;
  
              // Damp the rotation around the y-axis
              currentRotationAngle = Mathf.LerpAngle(currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
  
              // Damp the height
              currentHeight = Mathf.Lerp(currentHeight, wantedHeight, heightDamping * Time.deltaTime);
  
              // Convert the angle into a rotation
              var currentRotation = Quaternion.Euler(0, currentRotationAngle, 0);
  
              // Set the position of the camera on the x-z plane to:
              // distance meters behind the target
              transform.position = target.position;
              transform.position -= currentRotation * Vector3.forward * distance;
  
              // Set the height of the camera
              transform.position = new Vector3(transform.position.x ,currentHeight , transform.position.z);
  
              // Always look at the target
              transform.LookAt(target);
          }
      }
  }
  </code></pre>
  
  <p>However, it doesn't really work the way I need it to. It keeps spun out sort of, and makes it very confusing to tell where you going (<a href="https://vid.me/xHLA" rel="nofollow">take a look at this video I uploaded, and watch the key presses</a>) . What I want the camera to do is follow behind the player (the ball) at all times. When I go left it should stay behind me as I turn, and when I go backwards it should turn around to be at the back of the ball. So how would I do this?</p>