So I need some help with efficiency problems with a "Play Animation on click" script. It's a really simple part-click script that changes the animation of a NPC to another random animation. The real issue is that there is a random delay that appears trying to load the next animation. What I need it to do is let the player be able to spam the button, increase the score and change the animations smoothly.

What I think it is, it's something to do with the single wait(.1) I have at the bottom of the code, but I have no idea if it's really the case or how to change it to something better. Also I doubt my animations have delays in them since its 5 with the same timeline lengths, priority and KeyFrames.

local runService = game:GetService("RunService")
local starterGui = game:GetService('StarterGui')
starterGui:SetCore("TopbarEnabled", false)

local scoreValue = script:FindFirstChild("Score")

game.Players.PlayerAdded:connect(function(player)

	player.CharacterAdded:connect(function(character)
		if not character:FindFirstChild("Humanoid") then return end
		local humanoid = character:WaitForChild("Humanoid")
		humanoid.WalkSpeed = 0

		
		--SETUP OUR ANIMATIONS
		local animationTable = {887079940,887088637,887093321,887096360,887101694}
		local clickOnMe = game:GetService("Workspace").ClickOnMe
		local Humanoid = game.Workspace.Noob:WaitForChild("Humanoid")
		local animation = Instance.new("Animation", game.Workspace.Noob)
		local previousAnimation;

		--LOAD IDLE ANIMATION
		animation.AnimationId = "http://www.roblox.com/Asset?ID=887061813"
		local idleAnimationTrack = Humanoid:LoadAnimation(animation)		
		idleAnimationTrack:Play()
		
		--LETS ANIMATE THIS
		local function buttonClicked(player)
			local randomAnimation = math.random(1, #animationTable)
			if randomAnimation == previousAnimation then return end
			previousAnimation = randomAnimation
			print("Running Animation #"..randomAnimation)	

			
			animation.AnimationId = "http://www.roblox.com/Asset?ID="..animationTable[randomAnimation]
			local animTrack = Humanoid:LoadAnimation(animation)
			scoreValue.Value = scoreValue.Value + 1			
			animTrack:Play()
			wait(.1) --tsk tsk what do
		end
	
	end)
end)

I'm sure the code will let you know what's wrong but if you need more info then comment.