is it not possible with a script?
it is but id say do animations bro. using scripts is unneeded and not really the best thing.
loading animations is much easier then tweening or cframing stuff.
Well you could do a motor 6d animation that plays every time you fire the tool. I Reconmend to learn motor 6d animations.
I want to use cframes because I have tons of guns and going in and animating the slide on each one is harder than just a script.
like i said its easier animating the weapons instead of cframing a welded part…
So… If anyone still want to know i did by adding to my gun Model a “slide Start” part and a “slide End”
And i tween the slide motor6d between those two parts. since this parts are already motor6d’d to the gun i dont have to worry about the slider drifting around.
The code looks like this:
function module.ReciprocateGun(gun:Model,gunData:WeaponsDataShared.Gun)
local gunReciprocatorMotor :Motor6D = gun:FindFirstChild('ReciprocatorMotor6D',true)
local reciprocatorStartMotor:Motor6D = gun:FindFirstChild('ReciprocatorStartMotor6D',true)
local reciprocatorEndMotor:Motor6D = gun:FindFirstChild('ReciprocatorEndMotor6D',true)
if gunReciprocatorMotor and reciprocatorEndMotor and reciprocatorStartMotor then
print('reciprocate')
local startGoal = {
C0 = reciprocatorEndMotor.C0
}
local endGoal = {
C0 = reciprocatorStartMotor.C0
}
local info = TweenInfo.new((0.08 / 2) , Enum.EasingStyle.Quad, Enum.EasingDirection.In)
local tweenStart:Tween = TweenService:Create(gunReciprocatorMotor, info, startGoal)
local tweenEnd:Tween = TweenService:Create(gunReciprocatorMotor, info, endGoal)
tweenStart:Play()
tweenStart.Completed:Connect(function()
tweenEnd:Play()
end)
end
end
Quick note:
I weld my parts at run time with a custom welding function and i did this because i am doing a procedural FPS framework for my game and sice i am a one man team i cannot afford the time to animate guns.