Temp. disable Camera Boom / Spring Arm

I am using a camera attached via spring arm to my main actor to always follow that actor through the map. However, in some situations I want to temporarily disable that, instead move the camera to a certain (birds eye) point, where it should stay fixed for a while.

I guess I could use a second camera at that fixed birds eye view point and blend from my main cam to that 2nd cam. But I don’t want to blend, I want to move the main camera to that birds eye point, so that the player sees the camera moving from the main character to the top-down view.

Any ideas how I could achieve this via Blueprint?

I am not at my computer with Unreal right now but you will have to disable the control rotation on the spring arm/movement component. It is one of them. You may also have to disable the orient towards movement on the movement component. It is not too difficult to do. Then just set the desired spring arm angle.

I am afraid that won’t be sufficient. Because the actor might still move around while the camera must stay fixed.
Thus, while in this “birds eye” mode the camera should stay at its position and orientation, while the actor can move around.

Cna I disable the spring arm completly temporarily?

Oh, I thought you meant a relative fixed position to the player. However, you can still use the same camera. I am uploading a video on youtube right now showing a quick way on how to do it. (Not live yet https://youtu.be/zPa6kzs9_gY) I just prototyped it out quick. It is just meant to show the basic function of it.

Basically, while you want the top down view, just set the world location and rotation of the camera boom every tick to your desired value. I even set the boom length from the location. Then reset when your done. You can interp to the values and back to smooth the motion. You’ll have to change what values, world or relative, when you do that.

Thanks a lot … but it seems your video is still not online.
Is this a problem with YouTube, or was the upload cancelled?

Thanks for letting me know. It looks like it got stuck at 83%. I’ll get the video up when I get home from work…About 2 hours.

Thank you very much!

It is up, but for some reason it is only available up to 360p. You can still follow along, it is no that in-depth. It is just a quick test on how to do this. Here is a quick snapshot of the blueprint. 7617c5b950bbea3fe66e29890c2f06f295adc1c1.jpeg

Thank you so much, your video really helped me a lot. Now while I was implementing your solution I found another one: One can detach the whole camera boom from the actor and then set its desired location and rotation. Since it’s detached from the actor, I don’t need to constantly re-set the location and rotation in the Tick event, only once. When I am done I simply re-attach the camera boom to the actor, and everything is as it has been before :slight_smile:

Can you share a pic of the BP?

Sure! First I created a small function for my actor, to attach or detach the camera boom:

Then I use this function with timeline like this:

Does this make sense to you?
Seems to work pretty well for me :slight_smile:

Thanks for sharing this. I have a different setup for another project where I switch between cameras but I wanted to try some other ways to move the camera around the map; this looks promising.

Old thread, but in case anyone came searching, like I did, for a way to “reset” a spring arm (i.e. reset it’s springiness if you want to do a hard teleport on it’s attached camera), you can do it this way:

Requires the one-frame delay, but is the only effective way I found.

I always used your method, a delay… BUT I ended up with this approach (uses c++):


class UCustomSpringArmComponent : public USpringArmComponent {
GENERATED_BODY()
public:
  // This resets the target arm component location to the location of the arm component
  UFUNCTION(BlueprintCallable)
  void ResetArmTargetLocation() {
    // Using this, the change is instant, no need for a delay.
    UpdateDesiredArmLocation(false, false, false, 0 /* not used inside */);
  }
};