Help with Smooth Transition


I’m trying to achieve the same kind of smooth lane switching found in Audiosurfs Ninja Mono mode. It’s fast, but not instantaneous. You can see how the ship moves and realigns itself when it arrives on the lane it goes to.
And switching is fast when it arrives in the new lane.

I’d like to achieve the same but I have a few issues with this form of transition:

As you can see above, it jumps between five lanes total, but the transition is not exactly smooth as you’d find in Audiosurf:

My current attempt looks as such:


Any help to try and make the transition feel like it has weight to it would be appreciated.

I think you should probably keep delta time using real delta time and change the interp speed with your timeline if you want to control it like that.

One minor bit is that the ship in your second video seems to accelerate more quickly with more of a ease on the ending. Yours seems to ease in and ease out equally which makes it feel like a softer movement. I am not sure if the choppyness is from the video/framerate or the use of timeline on deltatime.

Also keep in mind the video you are comparing to has a 3rd person camera with additional lagged response and some custom shake which is adding further to the weight. It may be hard to achieve that.

Maybe what you need is more of an “ease out” function with a bit of recoil at the end? You could try mimicing some curves like these if you want to experiment with different effects (or do it mathematically)

Here is a solution ,


You are probably right that the use of a third person camera like that, rather than an overview adds to the “weight” of the movement. I did consider that as well.
Also, I can confirm that the ship seems to sort of “jitter” back and forth. It’s not just the framerate, it’s fairly true to how the game feels right now. Sort of jittery.

I will check out that website. Thanks!

Alright thanks, I’ll check it out!

I just looked at your graph again and it seems the problem is also cause by not updating the current lane value.

Instead, use the current actor location as “current” or make a temporary “current actor location” variable for the “current” input on the vinterpt. You would simply set it to actor location before the timeline plays and on update.

You may also have to make the deltatime change I suggested before bit this bug is probably the main culprit.

Hmm, what do you mean? I do update the Target Lane and Old Lane before I do the transition? Or do you mean to have a temporary variable used in the update loop?

Yes. VInterpTo expects the “current” value to be updated by the interpolation. Your “Current” input is always returning a static value of the Lane starting position. If you just use actor position instead for the Current value it should work.

Right so, I tried what you said RyanB but I couldn’t quite do it the way I thought you wanted me to do it, so I looked at Mhousse’ solution, and it was probably what you meant.

So here is the result that works:


Thanks for your help!