local player = game.Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local humanoid = char:WaitForChild("Humanoid") local hrp = char:WaitForChild("HumanoidRootPart") local DASH_DISTANCE = 10 local DASH_TIME = 0.15 -- smooth dash duration local COOLDOWN = 1 local DASH_ANIMATION_ID = "rbxassetid://18153798204" -- change if you want local canDash = true -- GUI local gui = Instance.new("ScreenGui") gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local button = Instance.new("TextButton") button.Size = UDim2.new(0, 150, 0, 45) button.Position = UDim2.new(0.5, -75, 0.8, 0) button.BackgroundColor3 = Color3.fromRGB(40, 40, 40) button.TextColor3 = Color3.new(1, 1, 1) button.TextScaled = true button.Text = "Dash" button.Parent = gui -- load dash animation local dashAnim = Instance.new("Animation") dashAnim.AnimationId = DASH_ANIMATION_ID local dashTrack = humanoid:LoadAnimation(dashAnim) -- Smooth dash function local function dash() if not canDash then return end canDash = false -- play animation if dashTrack then dashTrack:Play() end local direction = hrp.CFrame.LookVector local targetPos = hrp.Position + (direction * DASH_DISTANCE) -- smooth movement (tween) local tweenService = game:GetService("TweenService") local tween = tweenService:Create( hrp, TweenInfo.new(DASH_TIME, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {CFrame = CFrame.new(targetPos, targetPos + hrp.CFrame.LookVector)} ) tween:Play() -- cooldown task.wait(COOLDOWN) canDash = true end button.MouseButton1Click:Connect(dash) -- Update character after respawn player.CharacterAdded:Connect(function(newChar) char = newChar humanoid = char:WaitForChild("Humanoid") hrp = char:WaitForChild("HumanoidRootPart") dashTrack = humanoid:LoadAnimation(dashAnim) end)