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:
-
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
-
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 -
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
-
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
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.