private void LateUpdate () {
Vector3 cameraPosition = this.transform.position;
Vector3 targetPosition = target.transform.position;
Vector3 idealTargetPosition = this.mainCamera.ViewportToWorldPoint (target.ViewportPosition);
Vector3 offset = cameraPosition - idealTargetPosition;
cameraPosition.x = targetPosition.x + offset.x;
this.transform.position = cameraPosition;
}