local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local hrp = character:WaitForChild("HumanoidRootPart") local animation = Instance.new("Animation") animation.AnimationId = "rbxassetid://46196309" local loadedAnim = humanoid:LoadAnimation(animation) local sound = Instance.new("Sound") sound.SoundId = "rbxassetid://2428506580" sound.Volume = 1 sound.Parent = hrp local debris = game:GetService("Debris") local runService = game:GetService("RunService") local uis = game:GetService("UserInputService") local isJumping = false uis.JumpRequest:Connect(function() if character and humanoid and hrp then sound:Play() task.delay(0, function() local direction = hrp.CFrame.LookVector hrp.Velocity = (direction * 100) + Vector3.new(0, 50, 0) end) task.delay(0.1, function() if isJumping then loadedAnim:Play() end end) end end) humanoid.StateChanged:Connect(function(_, newState) if newState == Enum.HumanoidStateType.Jumping then isJumping = true elseif newState == Enum.HumanoidStateType.Landed then isJumping = false if loadedAnim.IsPlaying then loadedAnim:Stop() end for _, legName in pairs({"LeftFoot", "RightFoot", "LeftLeg", "RightLeg"}) do local leg = character:FindFirstChild(legName) if leg then local attachment = Instance.new("Attachment") attachment.Parent = leg local dust = Instance.new("ParticleEmitter") dust.Texture = "rbxassetid://241837157" dust.Rate = 2000 dust.Lifetime = NumberRange.new(0.2) dust.Speed = NumberRange.new(15, 20) dust.Size = NumberSequence.new({NumberSequenceKeypoint.new(0, 5), NumberSequenceKeypoint.new(1, 0)}) dust.SpreadAngle = Vector2.new(180, 0) dust.Rotation = NumberRange.new(0, 360) dust.RotSpeed = NumberRange.new(100) dust.Parent = attachment debris:AddItem(attachment, 0.2) debris:AddItem(dust, 0.2) end end end end) runService.Heartbeat:Connect(function() if isJumping then local rayOrigin = hrp.Position local rayDirection = Vector3.new(0, -3, 0) local raycastParams = RaycastParams.new() raycastParams.FilterDescendantsInstances = {character} raycastParams.FilterType = Enum.RaycastFilterType.Blacklist local rayResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams) if rayResult then isJumping = false if loadedAnim.IsPlaying then loadedAnim:Stop() end for _, legName in pairs({"LeftFoot", "RightFoot", "LeftLeg", "RightLeg"}) do local leg = character:FindFirstChild(legName) if leg then local attachment = Instance.new("Attachment") attachment.Parent = leg local dust = Instance.new("ParticleEmitter") dust.Texture = "rbxassetid://241837157" dust.Rate = 2000 dust.Lifetime = NumberRange.new(0.2) dust.Speed = NumberRange.new(15, 20) dust.Size = NumberSequence.new({NumberSequenceKeypoint.new(0, 5), NumberSequenceKeypoint.new(1, 0)}) dust.SpreadAngle = Vector2.new(180, 0) dust.Rotation = NumberRange.new(0, 360) dust.RotSpeed = NumberRange.new(100) dust.Parent = attachment debris:AddItem(attachment, 0.2) debris:AddItem(dust, 0.2) end end end end end)