Syncing 3rd person Camera with Player

Okay, so a bit of a complex issue here. I’m trying to sync up camera movement with the player object so that the Y axis rotation of the camera matches the player and the camera translates across an arc so that it stays in the same relation to the player. So far I’ve been able to achieve the former, but not the latter.

Here is my camera controller script.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class cameraController : MonoBehaviour {

    private const float Y_MIN = -10.0f;
    private const float Y_MAX = 50.0f;

    public GameObject player;
    public float tiltSpeed;
    public float cameraHeight;
    public float cameraFollow;
    private Vector3 offset;

    // Initialization of the player's position and the offset used to keep the camera following the player at a fixed distance
    void Start ()
    {
        offset = new Vector3 (player.transform.position.x, player.transform.position.y + cameraHeight, player.transform.position.z + cameraFollow);
    }

    void LateUpdate ()
    {
        float joyY = Input.GetAxis ("Joystick Y");
        Vector3 lookUpDown = new Vector3 (joyY, 0.0f, 0.0f);

        transform.position = player.transform.position + offset;
        transform.Rotate (lookUpDown);
    }
}

And here is my script for controlling the player (which is a friction-less cube right now):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour {

    //GUI UnityEditor Variables
    public float speed;
    public Camera firstPersonCamera;
    public Camera thirdPersonCamera;

    private Rigidbody playerChar;

    void Start()
    {
        playerChar = GetComponent<Rigidbody> ();
        showFirstPersonCamera ();
    }
       
    void FixedUpdate ()
    {
        float moveHorizontal = Input.GetAxis ("Horizontal");
        float moveVertical = Input.GetAxis ("Vertical");
        float joystickX = Input.GetAxis ("Joystick X");
        float joystickY = Input.GetAxis ("Joystick Y");
        bool changeCamera = Input.GetButtonDown ("JoystickButton9");

        Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
        Vector3 rotationY = new Vector3 (-joystickY, 0.0f, 0.0f);
        Vector3 rotationX = new Vector3 (0.0f, joystickX, 0.0f);

        playerChar.AddRelativeForce (movement * speed);

        transform.Rotate (rotationY);
        transform.Rotate (rotationX, Space.World);

        if (changeCamera)
        {
            //Check to see what camera is on and then call appropriate function to change view
            if (firstPersonCamera.gameObject.activeInHierarchy)
            {
                showOverheadCamera ();
            }

            else if (thirdPersonCamera.gameObject.activeInHierarchy)
            {
                showFirstPersonCamera ();
            }
        }
    }

    void showFirstPersonCamera()//Changes view to first person
    {
        thirdPersonCamera.gameObject.SetActive (false);
        firstPersonCamera.gameObject.SetActive (true);
    }

    void showOverheadCamera()//Changes view to third person
    {
        firstPersonCamera.gameObject.SetActive (false);
        thirdPersonCamera.gameObject.SetActive (true);
    }
}

I feel like I must just be missing something as far as translating along an arc in the documentation for the scripting goes. No matter what I try, writing a transform.rotateAround() or nesting the cameras as children of the player, I can get the cameras to rotate where they are, but not around the Player’s relative Y axis.

Any help with this would be greatly appreciated.

As an update, I commented out the offset and transform.position function and nested both cameras as children, seems to have worked.