FOV Zoom System

Hi, I have a system where the FOV and spring arm are tied to the characters velocity, as the velocity increases, the FOV and the spring arm length increase/decrease to give the illusion of speed we see in certain games.

Right now since its tied to the velocity, when my character comes to a stop, it can be disorienting to have a sudden change in the FOV etc.

How can I have a gradual increase/decrease for these values while having them tied to the velocity still? or if there is a better way I would like to know.

Here is the blueprint for reference

Any help would be appreciated thanks!

I did a quick example of this for someone else recently.

I didn’t use a timeline as I wanted more control over when it needs to run, instead I used a timer. I create it on BeginPlay store it and pause it, to be accessed when needed.

Then when I press the Sprint Button (Left Shift in this example) and the player is moving, I Set IsSprinting to true and unpause the timer. If the Sprint Button is released, I turn off IsSprinting and also unpause the timer, in case it was paused.

The actual meat of the logic takes place behind a custom event (Sprinting) that is called by the timer. This adds or removes value from the alpha with each tick of the timer, depending on the value of IsSprinting.

I then run that alpha through a custom curve just to give more control over the ramping of the effects and run that value into all of the alpha values of the lerps that control, Sprint, Spring Arm, and FOV.

After that I check whether the alpha value has left the 0-1 range and if it has, I pause the timer so it doesn’t need to run unnecessarily, if either the button is held longer than it takes for the value to reach max, or when the player is just walking around.

Hopefully you can apply some of that to what you are working on or it at least gives you some ideas. If you want to apply this to a character that is being driven purely through velocity rather than a movement component that should transfer over pretty easily in place of walk speed, and obviously all the variables were just set to what worked for me at the time but can be set to anything.

Thank you this really helped me out!