How to make animated hand move up when player moves mouse up and down

I have a script that plays a equip animation when the watch is equipped (same with unequip). How can I make it so the watch on the hand is always visible to the player even if they move their camera not in view of the watch?

Script:

local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hum = char:WaitForChild('Humanoid')
local runservice = game:GetService('RunService')

local equiped = false

local holdload = hum:LoadAnimation(script.Parent.Hold)
script.Parent.Equipped:Connect(function()
	local equip = hum:LoadAnimation(script.Parent.Equip)
	equiped = true
	equip:Play()
	print('player')
	equip.Stopped:Wait()
	holdload:Play()
	holdload.Looped = true
	script.Parent.Screen.SurfaceGui.WatchFrame.Visible = true
end)
script.Parent.Unequipped:Connect(function()
	holdload:Stop()
	equiped = false
	local unequip = hum:LoadAnimation(script.Parent.Unequip)
	unequip:Play()
	unequip.Stopped:Wait()
	script.Parent.Screen.SurfaceGui.WatchFrame.Visible = false
end)



while wait(0.1) do
	if hum.WalkSpeed ~= 8 then
		hum:UnequipTools()
	end

end


Video: https://streamable.com/8prnyi

You could maybe locally have something offset to the player’s camera so it’s always on screen.

Do you have a idea how this would be implemented in game? I don’t understand how I would script this

You could copy fake arms into the workspace, offset them to the camera’s CFrame, and only the player wearing the watch can see them, ensuring the watch is always on screen and doesn’t appear strange to others.

You could use the current animation to show the watch is equipped to other players. Sorry if I didn’t explain it that well I don’t really know how.

1 Like

If I am correct what you are basically saying is a viewmodel, and earlier I was thinking about using a viewmodel too. This issue is I don’t know how to get the players shirt onto the viewmodel.

2 Likes

Depending on where the viewmodel is you could probably locally set the shirt to the player’s shirt id. That depends how you actually make the viewmodel though.

1 Like

Do you know how to do this? I don’t have a clue on how to do that.

1 Like

I would have to think about more than just the shirt generally but I think it could be done like this.

-- local script located in replicatedstorage

local vshirt = script.Parent --viewmodel shirt location

local plr = game:GetService("Players").LocalPlayer
local chr = plr.Character or plr.CharacterAdded

for i, v in pairs(chr:GetChildren()) do
	if v:IsA("Shirt") then
		vshirt = v.ShirtTemplate
	else
		return
	end
end

The rest you would have to do on your own.

Aka the actual viewmodel and CFrame stuff

What would I have to do to get the shirt working? Would I have a shirt in each body part?

No unless you’re doing it in a different way it would be like if it were a humanoid kind of.