I see you’ve defined the Mouse object. Why don’t you use it?
Can you try this and see if it makes any difference? If it doesn’t, then it’s most likely just your animation.
local Player = game.Players.LocalPlayer
local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")
local Mouse = Player:GetMouse()
local PunchAnim = Humanoid:LoadAnimation(script.Punch1Anim)
local Cooldown = false
Mouse.Button1Down:Connect(function()
if not Cooldown then
Cooldown = true
PunchAnim:Play()
wait(1)
Cooldown = false
end
end)