I’m having trouble with the equip and unequip animations of my viewmodel, the animation that i made for them is a simple linear move of the arm’s going up or down, but in runtime, it starts at the default position, then tries to tween with the equip or unequip animations, im a bit lost on what is going on, could someone explain to me?
-- services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
-- variables
local player = Players.LocalPlayer
local tool = script.Parent
local camera = workspace.CurrentCamera
local mouse = player:GetMouse()
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid") :: Humanoid
local animator = humanoid:WaitForChild("Animator") :: Animator
local viewModel = ReplicatedStorage.Assets.ViewModels.Knife
local swung = tool.Swung
local properties = require(tool.Properties)
local rng = Random.new()
local swingDebounce = false
local equipped = false
-- functions
tool.Handle.Transparency = 1
player.CameraMode = Enum.CameraMode.LockFirstPerson
local function createTrack(animID, track) : AnimationTrack
local animation = Instance.new("Animation")
animation.AnimationId = animID
return track:LoadAnimation(animation)
end
local equipTrack = createTrack(properties.EquipAnimation, animator)
equipTrack:SetAttribute("ViewModelAnimation", true)
tool.Equipped:Connect(function()
equipped = true
viewModel = ReplicatedStorage.Assets.ViewModels.Knife:Clone()
viewModel.Parent = camera
UserInputService.MouseIconEnabled = false
local viewModelTrack = createTrack("rbxassetid://18628296979", camera.Knife.Humanoid.Animator)
equipTrack:Play()
viewModelTrack:Play()
end)
tool.Unequipped:Connect(function()
local viewModelTrack = createTrack("rbxassetid://18628399511", camera.Knife.Humanoid.Animator)
viewModelTrack:Play()
viewModelTrack.Ended:Wait()
equipped = false
equipTrack:Stop()
camera.Knife:Destroy()
UserInputService.MouseIconEnabled = true
end)
tool.Activated:Connect(function()
if swingDebounce then
return
end
swingDebounce = true
local swingTrack = createTrack(properties.SwingAnimations[rng:NextInteger(1, #properties.SwingAnimations)], animator)
local viewmodelTrack = createTrack("rbxassetid://18628197508", camera.Knife.Humanoid.Animator)
swingTrack:Play()
viewmodelTrack:Play()
viewmodelTrack:AdjustSpeed(1.5)
swingTrack:AdjustSpeed(1/properties.AnimationDuration)
swung:FireServer()
task.wait(0.25)
swingDebounce = false
end)
local swayCFrame = CFrame.new()
RunService.RenderStepped:Connect(function(dt)
if player.Character.Humanoid.Health <= 0 then
if camera:FindFirstChildWhichIsA("Model") ~= nil then
camera.Knife:Destroy()
end
end
if equipped then
if camera:FindFirstChild("Knife") ~= nil then
camera.Knife:SetPrimaryPartCFrame(camera.CFrame)
local mouseDelta = UserInputService:GetMouseDelta()/50
local swayX = math.clamp(mouseDelta.X, -0.10, 0.10)
local swayY = math.clamp(mouseDelta.Y, -0.10, 0.10)
swayCFrame = swayCFrame:Lerp(CFrame.new(swayX, swayY, 0), 5 * dt)
if mouseDelta ~= 0 then
camera.Knife:SetPrimaryPartCFrame(camera.CFrame * swayCFrame)
end
end
end
end)