Adjust camera zoom dependency with character speed

You’re going in the right direction. Use fInterp (or Ease) with MapRange node in order to obtain relative values.

edit: This could be a good start:

You may need to tweak it a bit to make if feel right:

Image from Gyazo

1 Like

Hi there.

As you saw in many games when character start to run or sprint camera truck back to emphasize the character speed. So I tried to imitate the effect by using my character velocity length and camera FOV. But the direct relation between camera and speed makes some troubles. mainly when speed goes to zero immediately, camera jump to start distance.

I thought of using Lerp(float) or ease functions but there is no certain point for starting the lerp or there is no relation to speed here just lerp between two states.

So can you help me with a standard method to achieve this effect?

Thank you

You could use Lerp, Ease, fInterp To (or even fInterpToEaseInOut). But they all work slightly differently.

Lerp is the simplest and fill follow the alpha linearly (there’s no built in additional interpolation); however, the alpha itself does not need to be linear, you can design a curve and feed it to the Lerp node which will then stick to it precisely. You can feed it world delta seconds, too but then your frame time becomes your interpolation speed, meaning you have no control over it whatsoever. Lerp works really well with Timelines as you can shape the curve in its editor and get a very consistent result.

Ease has a bunch of built in functions (including linear), some of them have exposed exponents which allow you to further control the interpolation. Setting Ease to Linear makes it behave pretty much like Lerp. Ease is like a very flexible fInterpTo?

fInterp To (not the constant one) - it always felt to me like a simple Ease with In Out but with a magical InterpSpeed attribute instead that acts like a flat multiplier, making it user friendly.

fInterpToEaseInOut - same as above but an actual power exponent is exposed rather than Interp Speed multiplier. (?not 100% sure)

I hope I did not mix anything up.

That’s what I was talking about. Thank you @Everyone. This is a full setup here. I just used VelocityLengthXY instead of VelocityLength and InterpSpeed of 1.5 and its all fine.

Just a quick question yet. FInterp To is a function which interpolates two values over game time with a desired speed but Ease functions and Lerps use Alpha for interpolating values. So is it possible to use them in this situation? I think FInterp To is the only option here.

You are really an amazing person. I learned a lot from this post. I didn’t know that I can feed Alpha value with WorldDeltaSeconds. I can’t imagine how delta seconds works as alpha yet but that’s OK for now.

Thank you so much

hi

this is wonderful. thank you.
I tried this blueprint for camera position and rotation instead of FOV but I failed. do you have any solution for that? FOV changes not look so good on my side scroller prototype but I believe camera position gonna work.

I tried this blueprint for camera
position and rotation instead of FOV
but I failed.

@noc: you’d need to be a bit more descriptive than that. Perhaps start a new thread and describe your expectations regarding how a system you envisioned should work; mention what what you’ve tried and attach a screenshot of the blueprint that’s misbehaving. It usually helps a lot.

Thanks, sir :heart: