Camera follow [auto rotating when player moved sides]

Hi all,
I want the camera [maincamera] to follow a ball but when i go left the camera rotates right, so the camera will be always behind the ball/player. For example now i have script that just follow player but if i go left or right its always look in the same direction, it looks like 2d it doesnt rotate with an object. I want it to be when i go left it rotates to right so the camera is always behind the ball.
I hope it makes sense, i researched on google and couldnt find anything like this im using script SmoothFollow

using UnityEngine;

namespace UnityStandardAssets.Utility
{
    public class SmoothFollow : MonoBehaviour
    {

        // The target we are following
        [SerializeField]
        public 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() {

            target = GameObject.FindWithTag("Ball").transform;
        }

        // 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);
        }
    }
}

If anyone could help i would really appreciate

I’m not sure what exactly you are after, I found your explanation to be confusing.
This is a shot in the dark but what I can gather is that you want a camera that will follow the ball while also being behind the ball.

Looking at the code I see a distinct lack of vectors, which will work wonders for this type of thing.
If your still working on this problem and need help then could clarify the behavior your looking for. Ill see how i can help from there.