Run it
Copy the script and paste it into your executor.
Players = :()
UserInputService = :()
RunService = :()
player = Players.LocalPlayer
camera = .CurrentCamera
movingPart =
followDistance =
followSpeed =
useCamera =
lastPosition =
gui, frame, nameLabel, collapseButton, decreaseButton, numberBox, increaseButton, cameraButton
collapsed =
selectionBox = .()
selectionBox.Color3 = .(, , )
selectionBox.LineThickness =
selectionBox.SurfaceTransparency =
selectionBox.Adornee =
selectionBox.Parent = :()
selectionBox.Name =
()
movingPart =
selectionBox.Adornee =
(part, targetPos, deltaTime)
part part.Anchored
direction = (targetPos - part.Position)
velocity = direction *
velocity.Magnitude > followSpeed
velocity = velocity.Unit * followSpeed
part.AssemblyLinearVelocity = velocity
(part)
movingPart = part
lastPosition = part.Position
selectionBox.Adornee = part
(part)
movingPart == part
()
part.Anchored
()
(part)
()
player.Backpack:()
tool = .()
tool.Name =
tool.RequiresHandle =
tool.CanBeDropped =
tool.Parent = player.Backpack
tool.Equipped:((mouse)
mouse
mouse.Button1Down:(()
target = mouse.Target
target target:() target.Anchored
(target)
)
touchConnection
touchConnection = UserInputService.TouchTapInWorld:((pos, processed)
processed
ray = camera:(pos.X, pos.Y)
params = RaycastParams.()
params.FilterDescendantsInstances = {player.Character}
params.FilterType = .RaycastFilterType.Blacklist
result = :(ray.Origin, ray.Direction * , params)
result result.Instance result.Instance:() result.Instance.Anchored
(result.Instance)
)
tool.Unequipped:(()
()
touchConnection
touchConnection:()
touchConnection =
)
)
RunService.Heartbeat:((deltaTime)
movingPart
char = player.Character
root = char char:()
(root movingPart movingPart.Parent movingPart.Anchored)
()
targetPosition
useCamera
targetPosition = camera.CFrame.Position + camera.CFrame.LookVector * followDistance
targetPosition = root.Position + root.CFrame.LookVector * followDistance
(movingPart, targetPosition, deltaTime)
(movingPart.Position - lastPosition).Magnitude >
()
lastPosition = movingPart.Position
)
()
gui gui:()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.DisplayOrder =
gui.ZIndexBehavior = .ZIndexBehavior.Global
gui.Parent = :()
frame = .()
frame.Size = .(, , , )
frame.Position = .(, , , )
frame.BackgroundColor3 = .(, , )
frame.BackgroundTransparency =
frame.BorderColor3 = .(, , )
frame.BorderSizePixel =
frame.Active =
frame.Draggable =
frame.Parent = gui
nameLabel = .()
nameLabel.Size = .(, , , )
nameLabel.Position = .(, , , )
nameLabel.BackgroundColor3 = .(, , )
nameLabel.Text =
nameLabel.TextScaled =
nameLabel.Font = .Font.Legacy
nameLabel.TextColor3 = .(, , )
nameLabel.Parent = frame
collapseButton = .()
collapseButton.Size = .(, , , )
collapseButton.Position = .(, , , )
collapseButton.Text =
collapseButton.TextScaled =
collapseButton.Font = .Font.Legacy
collapseButton.TextColor3 = .(, , )
collapseButton.BackgroundColor3 = .(, , )
collapseButton.Parent = nameLabel
collapseButton.MouseButton1Click:(()
collapsed = collapsed
_, child (frame:())
child ~= nameLabel
child.Visible = collapsed
collapsed
frame.Size = .(, , , )
nameLabel.Size = .(, , , )
frame.BackgroundTransparency =
collapseButton.Text =
frame.Size = .(, , , )
nameLabel.Size = .(, , , )
frame.BackgroundTransparency =
collapseButton.Text =
)
decreaseButton = .()
decreaseButton.Size = .(, , , )
decreaseButton.Position = .(, , , )
decreaseButton.Text =
decreaseButton.TextScaled =
decreaseButton.Font = .Font.Legacy
decreaseButton.TextColor3 = .(, , )
decreaseButton.BackgroundColor3 = .(, , )
decreaseButton.Parent = frame
numberBox = .()
numberBox.Size = .(, , , )
numberBox.Position = .(, , , )
numberBox.Text = (followDistance)
numberBox.Font = .Font.Legacy
numberBox.TextColor3 = .(, , )
numberBox.BackgroundColor3 = .(, , )
numberBox.ClearTextOnFocus =
numberBox.Parent = frame
increaseButton = .()
increaseButton.Size = .(, , , )
increaseButton.Position = .(, , , )
increaseButton.Text =
increaseButton.TextScaled =
increaseButton.Font = .Font.Legacy
increaseButton.TextColor3 = .(, , )
increaseButton.BackgroundColor3 = .(, , )
increaseButton.Parent = frame
cameraButton = .()
cameraButton.Size = .(, , , )
cameraButton.Position = .(, , , )
cameraButton.Text =
cameraButton.TextScaled =
cameraButton.Font = .Font.Legacy
cameraButton.TextColor3 = .(, , )
cameraButton.BackgroundColor3 = .(, , )
cameraButton.Parent = frame
()
numberBox.Text = (followDistance)
decreaseButton.MouseButton1Click:(()
followDistance = .(followDistance - , , )
()
)
increaseButton.MouseButton1Click:(()
followDistance = .(followDistance + , , )
()
)
numberBox.FocusLost:(()
num = (numberBox.Text)
num
followDistance = .(num, , )
()
)
cameraButton.MouseButton1Click:(()
useCamera = useCamera
cameraButton.Text = .. (useCamera )
)
()
()
player.CharacterAdded:(()
()
()
)This script may not work properly due to if another player is too close to the object or if the part is serverside or if you're not close enough to the object it usually works better in single player games Adjustable Distance Best Mobile support UI First Person Toggle(Camera Follow) Collapsible UI Telekinesis item stays after respawns Fixed bugs made by me

Universal