Issue adding Panning to Camera in Roll-a-Ball Tutorial

Hi, ive got the Tutorial finished, built the majority of a 1st level, everything works perfect. Im looking into learning more from this project by attempting to add more to it. The first speedbump ive hit is adding the ability to Pan the Camera around the ball when needed to be able to get a view of the scene in the direction the ball is heading. The Problem I have is… exactly where I place the camera in the scene, it follows the ball always looking in the same direction, above…slight facing down at the Ball, id like to be able to mouse spin/rotate around it.

Ive been searching, reading, watching tutorials, and while ive learned a lot of other things, I don’t know what direction to go. Any Help or Direction on where to go or what to read for me to get past this problem would be greatly appreciated.

I did read about having the ball move in relation to camera input. I think this might be what I was looking for but im not sure. If anyone should shed some light on this for me I would a happy new game designer. Thanks.

Heres the code being used for the ball control.

using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;

namespace UnityStandardAssets.Vehicles.Ball
{
public class BallUserControl : MonoBehaviour
{
private Ball ball; // Reference to the ball controller.

private Vector3 move;
// the world-relative desired move direction, calculated from the camForward and user input.

private Transform cam; // A reference to the main camera in the scenes transform
private Vector3 camForward; // The current forward direction of the camera
private bool jump; // whether the jump button is currently pressed

private void Awake()
{
// Set up the reference.
ball = GetComponent();

// get the transform of the main camera
if (Camera.main != null)
{
cam = Camera.main.transform;
}
else
{
Debug.LogWarning(
“Warning: no main camera found. Ball needs a Camera tagged "MainCamera", for camera-relative controls.”);
// we use world-relative controls in this case, which may not be what the user wants, but hey, we warned them!
}
}

private void Update()
{
// Get the axis and jump input.

float h = CrossPlatformInputManager.GetAxis(“Horizontal”);
float v = CrossPlatformInputManager.GetAxis(“Vertical”);
jump = CrossPlatformInputManager.GetButton(“Jump”);

// calculate move direction
if (cam != null)
{
// calculate camera relative direction to move:
camForward = Vector3.Scale(cam.forward, new Vector3(1, 0, 1)).normalized;
move = (vcamForward + hcam.right).normalized;
}
else
{
// we use world-relative directions in the case of no main camera
move = (vVector3.forward + hVector3.right).normalized;
}
}

private void FixedUpdate()
{
// Call the Move function of the ball controller
ball.Move(move, jump);
jump = false;
}
}
}

Bump for possible Help/Guidance?