Yeah so SetViewTarget will just put a camera in that position (where the actor is). You could try SetViewTarget(PlayerChar->camera), that might work. If not read below. If it works you’ll still run into the problem where movement is not routed through the player controller onto the character
What you might want is to create a pawn like ACameraPawn that has just has a camera component on it. This will be your view.
You can place that in the world at a good angle you want (you could make it move around with WASD, or set it up to follow the player from a certain distance using Tick, etc)
So what will happen from here is that your PlayerController will have the ACameraPawn setup as the pawn it wants to spawn.
Inside the begin play of the player controller, you can have the same stuff, except you’ll also spawn the player character into the world using SpawnActor. Get a reference like
PlayerCharacter = Spawn<AMyCharacter>(whateverbp, Location, Rotation, Params);
You won’t call Unpossess anymore, as you’re never going to be possessing the player character. You’ll have to route commands through your PlayerController and explicity call Shoot etc on the player character if you want.
Now this has drawbacks because you won’t actually be possessing the player character so you can’t move around or rotate without properly setting that up, probably in code.