Getting Vector3 in between two given Vector3 after given Distance.

I have a Camera Object and a Player Object separated; and given the circumstances I cannot include the Camera into the Player Object internal hierarchy.

Desired Scenario:

Retrieve a Vector3 position between the Camera and Player (each one with local rotations of their own, not in 0’s) that has traveled 5 distance units starting from the Player Object.

float distance = 5.0F;

 void Update() {
/* unknownVector3 should be in the same path as cam.transform 
and player.transform but at distance of 5 starting from player and 
towards camera */
cam.transform.position = Vector3.Lerp(cam.transform.position, unknownVector3, Time.deltaTime * 2.0f);
/* Below: Was using these lines but I'm hoping to achieve this in 
one position adjustment per Update run */

cam.transform.position = player.transform.position;
cam.transform.Translate(new Vector3(0, 0, -distance ));


Thanks in advance people!

Vector3 playerToCam = cam.transform.position - player.transform.position;
Vector3 fiveTowardsCam = player.transform.position + playerToCam.normalized * 5f;

Another option using Vector3.Lerp…

Vector3 fiveTowardsCam = Vector3.Lerp(player.transform.position, cam.transform.position, 5.0f / Vector3.Distance(player.transform.position, cam.transform.position));