Need help with animation scripts

Im trying to do some stuff

  • make an animation play while the gui is visible, then go back to normal when its not visible
  • set walkspeed to 0 then back to 16 when its not visible

The Script:

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:FindFirstChildOfClass("Animator")
local loadAnim

if animator then
	loadAnim = animator:LoadAnimation(script.Animation)
	loadAnim.Priority = Enum.AnimationPriority.Idle
	loadAnim.Looped = true
	
	repeat 
		loadAnim:Play()
		wait()
	until loadAnim.IsPlaying == true
end

script.Parent.Frame:GetPropertyChangedSignal("Visible"):Connect(function()
	if script.Parent.Frame.Visible == false then
		if loadAnim then
			loadAnim:Stop()
		end
	end
end)
1 Like
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:FindFirstChildOfClass("Animator")
local loadAnim

function playAnim()
	if animator then
		loadAnim = animator:LoadAnimation(script.Animation)
		loadAnim.Priority = Enum.AnimationPriority.Idle
		loadAnim.Looped = true
		
		repeat 
			loadAnim:Play()
			humanoid.WalkSpeed = 0
			wait()
		until loadAnim.IsPlaying == true and humanoid.WalkSpeed == 0
	end
end

playAnim()

script.Parent.Frame:GetPropertyChangedSignal("Visible"):Connect(function()
	if script.Parent.Frame.Visible == true then
		playAnim()
	elseif script.Parent.Frame.Visible == false then
		if loadAnim then
			loadAnim:Stop()
			repeat 
				humanoid.WalkSpeed = 16
				wait()
			until humanoid.WalkSpeed == 16
		end
	end
end)