From what I understand, that is exactly the job of the PlayerCameraManager. The way I do changes in perspectives is by changing the ViewTarget of the PlayerCameraManager. The ViewTarget is like the actor you are viewing the world through. So in reality, you do not even need to possess or unposses anything (unless that is intended).
Since the camera is tied to the player, you would want to use your PlayerController. Once you have a reference to that, you can call either of the following:
APlayerController PC = // some code to get the player controller
PC->SetViewTarget(SpinningPawn, FViewTargetTransitionParams())
Which internally would call it through the associated PlayerCameraManager. Doing it manually would look like:
APlayerController PC = //some code to get the player controller
PC->PlayerCameraManager->SetViewTarget(SpinningPawn, FViewTargetTransitionParams());
FViewTargetTransitionParamsis a very handy structure that allows you to specify settings on how the camera transition is performed - mainly the blend type and duration.
Another cool tip to camera management is to understand how the camera picks its location based on the ViewTarget you set. It depends on the implemention of AActor::CalcCamerawhich you can override. Be default, it would try to look for a CameraComponent in the actor and use its position and properties for your camera manager. If no CameraComponent exists, then it will simply use the actor’s location and rotation in the world. This means you can conveniently control where the camera will end up on that pawn in your blueprint editor by adding and repositioning a CameraComponent.