(UPDATE) Smooth Custom Animation System

I made an animation system that uses Stravants Quaternion Interpolate script to custom edit welds per-frame, and messed with it a bit. After I got the system down I built a G17, M107, and an RPG to play around with. Press 2 to select the RPG, 3 for M107. Every animation can be interrupted (except for switching weapons) and allows you to dynamically switch between animations.

Edit: it now is on time with RenderStepped!
Edit2: G17! :smiley:

Don’t know if this is knew or anything but I found this pretty cool and players seemed to enjoy it!

That definitely looks like xLEGOx and not Anaminus though?

Great work nonetheless!

I use an edited version of that for my animations. The normal clerp won’t work when doing flips.

Ya, I think he meant Stravant.

You’re charging for this?

I kind of wanted to see it, but not anymore. I don’t have tons of robux to throw at everyone who asks. :confused:

Arc, I turned off paid access for a bit, feel free to test it out!

Very cool. I found a bug though; with the P90 you can rapidly click and then hold the mouse to fire multiple shots at a time.

Thanks, the guns code is only like 2 hours old so I still have some kinks to work out!

You inspired me to finally make the move to implement quaternion interpolation into my own libraries. I expected it to be quite heavy, but it’s actually extremely light. I have thirty scripts using this and I haven’t dipped below 99% performance yet. Definitely a smart move. Thanks.

I don’t want to sound nooby, or whatever you may think in the negative direction about this,
however i’m always up for learning so ill ask anyways: How exactly do i use this, and what would be the outcome for the functions?

I’m confused on what the parameters are for the functions, and what the functions will do?

I define a starting point, an end point, and the time I want it to take to animate the interpolation.

Also guys I just updated it!

@Arc. Thanks, its actually VERY light, it never uses even 1%!

Just enabled dynamic animations. You can go straight from aiming to sprinting and straight from sprinting to aiming, or from switch weapons to sprinting/aiming with ease. Its now SUPER fluid! :smiley:

M107 added :slight_smile:

just a bit of a pet peeve of mine, nothing really to do with the animations, buuutttt… When I shoot a gun, I expect to see the bullet go straight from the barrel, not leave the barrel and turn 3 degrees left. I get the concept and all, but instead of changing the shot path, you might actually want to have some sway in the guns animations rather than have the ray angle to achieve that bit of randomness. bad example image

Quite smooth though I must say, though I have a feeling you aren’t using renderstepped, which I would highly recommend switching over to if you arent.

Animation smoothness good. Animation quality itself looks worse than mine.

Look at Authority for good animation quality. (Shameless advertising - mine )

1 Like

Tell me more of this render stepped and how you could tell I didn’t use it?

its more or less a way to fire a function every 60th of a second/ wait a 60th of a second, or close to it. using wait on its own can yield anything any number really, mainly a 30th of a second but it could be shorter or faster depending on the client.

renderstepped will also keep your animations in sync with physics doodads.

local runService = game:GetService(ā€œRunServiceā€)

runService.RenderStepped:connect(function)

OR

while runService.RenderStepped:wait() do
doodads()
end

Interesting, I`ll try inserting it tonight!

I implemented it and the system refused to animate anything because there was no proper wait time.

your wait time is just 1/60.

Really you can calculate frame time with some simple time() usage.