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!
Donāt know if this is knew or anything but I found this pretty cool and players seemed to enjoy it!
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?
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!
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.
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