How Do I Set Up the Player Camera Manager?

I am confused about the Player Manager Class in UE4. There is very little documentation about it online. I want to make a camera that lags behind my character’s movement only in the Z direction. I’ve tried using a spring arm, but it doesn’t work the way I want it to. I could hard-code the camera movement into my character, but that would be hard to do, since the camera follows the character since it is a child component. From what I understand, the Player Camera Manager takes the camera in the possessed pawn and moves it to its world transform. (as opposed to its transform relative to its parent) Is this true?

From what I understand, one is supposed to make their own class inheriting from Player Camera Manager, and then set that class as the Player Camera Manager class inside your Controller class. Then you can override the “Blueprint Update Camera” function to actually set the world transform of the current camera. However, this alone doesn’t seem to make the function execute. I have a node between the input and output that prints a message to console and that message never shows up. I have tried toggling Auto Manage Active Camera Target (not sure what this does), but that doesn’t seems to help.

Can anyone help explain what is going on or link me to some video/article that explains these classes/functions/variables?

2 Likes

The camera manager is literary both, a brand new camera & its manager. Disabling *Auto Manage Active Camera Target *will make the controller ignore any cameras that might be attached to the controlled Pawn and give full control to the Camera Manager (and its own camera).

From now on, you need to provide methods for your own camera movement, this is done by returning values from the overridden *Blueprint Update Camera - *the Return Value tickbox there is key!

In order to pull off a Springarm-like Z-only camera lag, you’d do something like this: (you can use *fInterp To *if you do not like the built in Ease)

Giving you something like this:

I hope I did not mix anything up; as you mentioned, the documentation here is rather scarce so the above are observations & trial and error. Quite a bit of the latter.

Hope it helps.

9 Likes

Well I just realized part of my problem. My Player Camera Manager Class in my controller was set to the default class. (genius, right?) Either way, you explanation makes it very clear on what this class is and how it’s used, something which I have yet to see online. Thank you very much!

1 Like

using get actor location as the z center point will make your camera way up in the air
you gotta invert transform or use a local value

1 Like

th epitch is not

the pitch is not getting updated

Thank you Cpt. Obvious. We can all see the 0,0,0 Rotator return. Have you considered updating it, pff. :smiley:

1 Like

Hello, I apologize for bumping this but I have an important question. Where did your base “ZInterp” and “FixedCameraLocation” variables come from? I’m writing this out in C++ using UpdateCamera() and I would like to see where you came up with these defaults.

Thanks in advance!

Fixed Camera Offset can be local. The zInterp stores the interpolation result and should live outside the scope of this function.

2 Likes

I dig into the source code of PCM, and it turns out the class intend to find the POV of camera on controlled pawn. So put a camera on character should be the standard thread and “BlueprintUpdateCamera” is a viable interception. PCM was usually used for cosmetic function like CameraFade and CameraShake, unless you want to modify how PCM find camera POV.

1 Like