How to fire an interpolation event, while avoiding tick?

Hi everyone! I’m familiar with programming (do code for a living) but still wrapping my head around C++ so for the moment I’m working in blueprints. I am rather new to Unreal and am still learning how the whole thing works, best practices etc.

I am trying to find the best, most optimal way of firing off interpolation events.

Let’s says I have a character and want to change its movement speed. An input action or whatever would cause the change in movespeed, I would assign this new value to the Target Movespeed variable. I now need to smoothly interpolate between the old/current value and the new target value (I’m fully aware that there might be ways of doing this with the character movement component, I just chose this as an example).

I don’t wanna do it on tick, because that could get messy. I generally wanna stay away from tick.

My options are, as far as I was able to find googling and looking around:

  1. Create a Timeline
    - Actor-specific
    - You gotta open it up to tweak it, but it’s very tweakable
    - You have to use set playrate to change the duration
    - Gets a bit messy
    - Executes parallel with tick according to tick group (is this correct?)
    - Overall very flexible, but might not be the right fit for what I’m trying to do


  2. Use a timer.
    - repeatedly fires an event and serves as the looper
    - needs to be manually stopped somewhere else
    - can get super messy as project grows

  3. Use Finterp to, add a boolean check to see if it’s arrived at the target value, and if not, loop the False exec of a Branch node back around. Use “Delay Until Next Tick” to synchronize with tick, otherwise it can be stuttery depending on what’s happening (adjusting boom arm, for example)
    - can be collapsed to a macro, not overly big
    - keeps it clean
    - doesn’t need another interim variable to hold the starting/current value, simplifying things further
    - can’t set exact time, only interp. speed


  4. Use Ease, like with the Timeline, except use game time to obtain the delta and be able to set exact duration for the interpolation
    - can be collapsed to a macro, but it gets decently big
    - keeps it clean
    - a lot more flexible than FInterp, allowing for different interpolation functions, but still not as crazily adjustible as Timeline
    - doesn’t need another interim variable to hold the starting/current value, simplifying things further
    image

All of these work, picking one is a matter of needs (need exact time, or need some crazy curve, or just want to interpolate).

My question is: did I get them all? Are these all of my options for firing an interpolation event? What am I missing?

The Ease one (number 4) basically gets me to where I want - I can choose a function and set the desired duration, but since it’s a macro, I’m unsure of the cost of using this across the project for a lot of triggers as there’ll be a metric crapton of nodes (code) in the end, as it’s not a function.

Another alternative I see would be setting these parameters as I normally do and assigning them to variables, then creating a bunch of gates in the On Tick event, and creating custom events that I could fire to open specific gates. That lets me order things exactly as needed (which is a valid requirement) and get rid of a lot of nodes in the macros and just use flat out Finterp to, though for Ease I’ll still need to set up a macro to get the timing.

did I get them all? Are these all of my options for firing an interpolation event? What am I missing?


The character animation blueprint spams every frame, too.

2 Likes