3rd Person Camera with fixed rotation

I’ve taken the camera script from 3d platformer tutorial and tried to make it work for what I need. As the code is right now the camera rotates with the rotation of the target, but I want it to keep looking in the same direction while keeping the target in the center of the view.

public GameObject Target;
public float Distance = 10.0f;
public float Height = 10.0f;
public float SmoothLag = 0.2f;
public float MaxSpeed = 10.0f;

private Vector3 headOffset = Vector3.zero;
private Vector3 centerOffset = Vector3.zero;
private ThirdPersonController controller;
private Vector3 velocity = Vector3.zero;
private float targetHeight = 100000.0f;

void Awake()
{
	CharacterController characterController = (CharacterController)Target.collider;
	if(characterController)
	{
		centerOffset = characterController.bounds.center - Target.transform.position;	
		headOffset = centerOffset;
		headOffset.y = characterController.bounds.max.y - Target.transform.position.y;
	}
	
	if(Target) 
	{
		controller = Target.GetComponent<ThirdPersonController>();
	}
	
	if(!controller)
	{
		Debug.Log("Please assign a target to the camera that has a Third Person Controller script component.");	
	}
}

// Use this for initialization
void Start () 
{

}

// Update is called once per frame
void Update () 
{
	
}

void LateUpdate()
{
	//transform.position = Target.transform.position + Offset;
	
	
	Vector3 targetCenter = Target.transform.position;// + centerOffset;
	Vector3 targetHead = new Vector3(0,0,1);//Target.transform.position;// + headOffset;
	
	targetHeight = targetCenter.y + Height;
	
	ApplyPositionDamping(new Vector3(targetCenter.x, targetHeight, targetCenter.z));	
	
	SetUpRotation(targetCenter, targetHead);
	
}

void ApplyPositionDamping(Vector3 targetCenter)
{
	Vector3 position = transform.position;
	Vector3 offset = position - targetCenter;
	offset.y = 0;
	Vector3 newTargetPos = offset.normalized * Distance + targetCenter;
	
	Vector3 newPosition;
	newPosition.x = Mathf.SmoothDamp(position.x, newTargetPos.x, ref velocity.x, SmoothLag, MaxSpeed);
	newPosition.z = Mathf.SmoothDamp(position.z, newTargetPos.z, ref velocity.z, SmoothLag, MaxSpeed);
	newPosition.y = Mathf.SmoothDamp(position.y, newTargetPos.y, ref velocity.y, SmoothLag, MaxSpeed);
	
	//newPosition = AdjustLineOfSight(newPosition, targetCenter);
	
	transform.position = newPosition;
}

void SetUpRotation(Vector3 centerPos, Vector3 headPos)
{
	Vector3 cameraPos = transform.position;
	Vector3 offsetToCenter = centerPos - cameraPos;
	
	Quaternion yRotation = Quaternion.LookRotation(new Vector3(offsetToCenter.x, 0, offsetToCenter.z));
	//Quaternion yRotation = Quaternion.LookRotation(new Vector3(0, 0, 0));
	
	Vector3 relativeOffset = Vector3.forward * Distance + Vector3.down * Height;
	transform.rotation = yRotation * Quaternion.LookRotation(relativeOffset);
}

The simplest way to keep the target in the middle of the view of a camera while maintaining the same view direction is to set up something like this-

The camera must be the child of a ‘camTarget’ object, which you place in the same location as the character’s starting position.

Then, put a simple position-copying script on the camTarget, and set the character to its ‘target’ value:

public Transform target;
void LateUpdate()
{
    transform.position = target.position;
}

Set up like this, the camera will always point at the character from the same direction and distance, no matter which way the character is facing!