Multiple Camera / scripting mess

Hello all,

I Am making my first game in Unity, and so far its going pretty well.

However, I am having one heck of a time trying to line up some cinematic shots.

I am trying to avoid scrapping the entire thing and starting over with cinemachine because ive come so far and im still not sure if it would even work 100% for what im doing.

I think this is gonna be one heck of a nightmare to explain, so ive included a short question , and a long one for those that are legendary enough to read it all.

Short Question:
How to normalize the different results from offset being wrong between:
this.transform.position = player.transform.position + offset;
this.transform.position = player.transform.TransformPoint(offset);

Long Question In Detail:
Alright let me try to explain what my current set up is:

I have a board consisting of a player and AI side.
Each side has 3 rows, with 3 slots in each row. So theres 9 possible positions a character can be Instantiated and placed per player.

Main Camera:
Follows the cursor around when moving between the slots and placing characters.
Uses:
this.transform.position = player.transform.position + offset;

Char Camera1:
When ending your turn, character skills are put into a Stack and popped out.
This camera then plays a Timeline Animation that does a cinematic rotation around a character.
Based on the slot location, the camera script applies another offset to the correct column / row.
As the character starts to move, a rotate and zoom out function is called, but its extremely inaccurate and rarely winds up in the intended position behind the character, it seems to depend on window size and maybe even frame rate.
After the timeline anim plays, this camera uses:
this.transform.position = player.transform.position + offset;

Char Camera2
This camera has a script where it follows around the Char Camera1 and is always properly positioned behind the characters back by using:
this.transform.position = player.transform.TransformPoint(offset);
and
this.transform.LookAt(player.transform);

I’ve managed to hack these things together in a way that almost works…
Problem is each character needs a unique offset for the “TransformPoint” call, because apparently this function somehow depends on the character Scale? And a bunch of my characters arent the same.

So for example, i would like to, but I cant just grab the offset right before enabling the charCamera2 via:
offset = transform.position - player.transform.position;

Because that offset is somehow not usable with the “TransformPoint()” method.

This results in a jump to a somewhat nearby position, and is not smooth at all.

Is there a way to somehow normalize this TransformPoint offset and my other offset?

I’ve also tried using lerp a few different ways, attempting to transition between these jumps but i’ll be honest, i dont think i’m doing it right.

Any advice or suggestions would be much appreciate.
I’ve watched a ton of YT vids and Tutorials but none seem to do exactly what I want ,
Timelines confuse the heck out of me,
and It seems like I’ll need
some more more animations for a few of my transitions I’ve manually done through code.
Hoping to avoid this and CineMachine.
Although basically what im trying to recreate is a feature of Cinemachine i saw in a tutorial where you can overlap two cameras in the timeline and they create a smooth transition between the two.

Thanks! for the long read…!

I actually found something thats working somewhat reasonably,

transform.position = Vector3.Lerp(player.transform.position + offset, player.transform.TransformPoint(offset2), 0.5f);

Although I am unsure of what I should be putting in for 0.5f.
Any suggestions?

Found a way to keep track of time for the 0.5f that now travels between 0 and 1. To ensure the camera always eventually gets to the right spot.

Guess this is working well enough for now