Hello! I am working on a movement system as of current, while working on this, I have come to realise that the transition method roblox uses, FadeTime, is linear and I am unable to change that.
Here is a video showing my current transitions which are done using default linear fadetime, they look dull and monotonous, showing no form of inertia at all.
Is there any other alternatives I can opt for rather than FadeTime which lets me use a non-linear method for transitioning animations?
Springs? They’re used in UI animations (e.g. developers working with React). There are other easing styles you can give to TweenInfo so you aren’t locked into Linear but not sure if you’re looking for a different easing style or to move away from duration-based tweens here.
Right now my endgoal is to make the locomotion system as realistic as possible, I have taken a look at systems like ALS (Advanced Locomotion System) created on Unreal Engine 4 which has sparked some ideas for me, you can check it out here v
some features are unfortunately unaccomplishable with roblox’s current engine due to things lacking like additive animation blending, ability to lock feet animations to curves from another animation to solve some foot locking, etc. Hence, I resorted to the other features found within the showcase, one of them being delicately smooth transitions between locomotion animations. I understand a huge part that gives this effect are the blend layers, however this is impossible for me as mentioned, roblox does not support additive blending, so I took both apart and compared my system to the one on UE4 and I figured the linear transitions between each animations is one of the things that set it apart from the one in UE4. As a result I searched the animation documentation for roblox studio however I can’t seem to find a way to change the linear easing style that roblox uses in the :Play(FadeTime) or :Stop(FadeTime) to the one that best suits it.
tl;dr I just want to find the best method make transitions between the locomotion animations as realistic and natural as possible, something which linear fadetime from :Play() and :Stop() is unable to provide me with but cant seem to find a way to include other easing styles
Ohh, very interesting. Yeah, unfortunately the limitations require you to make complex workarounds or change your approach entirely. Springs are generally the recommended way to go if you need animation but TweenService doesn’t do what you need.
You will have to pass a new TweenInfo with the information you want if you want to change any of the easing details, playback methods do not support arguments. TweenInfo takes an easing style and direction in addition to a time: see TweenInfo.
Unfortunately though, I’m not well-versed in any alternatives, so I won’t be able to be of any further help here.
Your only option would be to implement custom fade-out animations with AnimationTrack:AdjustWeight - AnimationTrack:Play and AnimationTrack:Stop both achieve their ‘fade-out’ effect by changing the animations’ weight.
And like @colbert2677 mentioned, springs might be better-suited for this usecase than tweens since they allow for smoother playing of animations in quick succession, as seen in Fusion’s docs: Tweens - Fusion
Yes, I already know that :Play() and :Stop() adjusts the weight of the animation using fadetime, but, in :AdjustWeight(weight, fadetime), fadetime also interpolates with the linear easingstyle, so my main question is what is the best method for actually adjusting the weight manually with my own easing style, also, again, what do you guys mean by using springs? And correct me if I am wrong but isn’t tweeninfo specifically meant to be used for tweenservice?
(EDIT: Nevermind, I think the Fusion Module can help with this, thank you so much! )