--[[ WARNING: Use at your own risk! ScriptBlox script to control anchored parts. ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") -- Create folder and part to hold the attachment local Folder = Instance.new("Folder") Folder.Name = "BlackHoleParts" Folder.Parent = Workspace local controlPart = Instance.new("Part") controlPart.Name = "ControlPart" controlPart.Anchored = true controlPart.CanCollide = false controlPart.Transparency = 1 controlPart.Size = Vector3.new(1,1,1) controlPart.Parent = Folder local attachment1 = Instance.new("Attachment") attachment1.Name = "Attachment1" attachment1.Parent = controlPart -- Store controlled parts here local controlledParts = {} -- Settings local BLACK_HOLE_VELOCITY = Vector3.new(14, 14, 14) -- Cleanup existing movers and attach new constraints to anchored parts local function forcePart(part) if not part or not part:IsA("BasePart") then return end if part.Anchored and not part.Parent:FindFirstChildOfClass("Humanoid") and not part.Parent:FindFirstChild("Head") and part.Name ~= "Handle" then -- Remove existing body movers for _, child in pairs(part:GetChildren()) do if child:IsA("BodyAngularVelocity") or child:IsA("BodyForce") or child:IsA("BodyGyro") or child:IsA("BodyPosition") or child:IsA("BodyThrust") or child:IsA("BodyVelocity") or child:IsA("RocketPropulsion") or child:IsA("AlignPosition") or child:IsA("Torque") or child:IsA("AlignOrientation") then child:Destroy() end end -- Create new constraints to control part local torque = Instance.new("Torque") torque.Torque = Vector3.new(100000, 100000, 100000) torque.Parent = part local alignPos = Instance.new("AlignPosition") alignPos.MaxForce = math.huge alignPos.MaxVelocity = math.huge alignPos.Responsiveness = 200 alignPos.Parent = part local attachment2 = Instance.new("Attachment") attachment2.Parent = part torque.Attachment0 = attachment2 alignPos.Attachment0 = attachment2 alignPos.Attachment1 = attachment1 part.CanCollide = false -- Track controlled parts controlledParts[part] = true end end -- Update controlled parts velocity every heartbeat RunService.Heartbeat:Connect(function() -- Move controlPart to player's humanoid root position controlPart.CFrame = humanoidRootPart.CFrame -- Set velocity on controlled parts for part, _ in pairs(controlledParts) do if part and part.Parent then part.Velocity = BLACK_HOLE_VELOCITY else -- Clean up removed parts controlledParts[part] = nil end end end) -- Initialize by forcing all anchored parts in workspace for _, part in pairs(Workspace:GetDescendants()) do forcePart(part) end -- Automatically force new parts added to workspace Workspace.DescendantAdded:Connect(function(part) forcePart(part) end) -- UI Button to toggle effect local blackHoleActive = true local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local screenGui = Instance.new("ScreenGui") screenGui.Name = "BlackHoleControlGUI" screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") local button = Instance.new("TextButton") button.Name = "ToggleBlackHoleButton" button.Size = UDim2.new(0, 200, 0, 50) button.Position = UDim2.new(0.5, -100, 0, 100) button.Text = "Disable Black Hole" button.Parent = screenGui button.MouseButton1Click:Connect(function() blackHoleActive = not blackHoleActive if blackHoleActive then button.Text = "Disable Black Hole" for _, part in pairs(Workspace:GetDescendants()) do forcePart(part) end else button.Text = "Enable Black Hole" -- Remove all constraints and clear controlledParts for part, _ in pairs(controlledParts) do if part and part.Parent then for _, child in pairs(part:GetChildren()) do if child:IsA("Torque") or child:IsA("AlignPosition") or child:IsA("Attachment") then child:Destroy() end end part.CanCollide = true end end controlledParts = {} end end)