Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
player = Players.LocalPlayer
PRESET =
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.IgnoreGuiInset =
gui.Parent = player:()
uiScale = .()
uiScale.Parent = gui
uiScale.Scale = .(.CurrentCamera.ViewportSize.Y / , , )
frame = .()
frame.BackgroundTransparency =
frame.BorderSizePixel =
frame.Parent = gui
PRESET ==
frame.Size = .(, , , )
frame.Position = .(, , , -)
frame.Size = .(, , , )
frame.Position = .(, , , )
viewport = .()
viewport.Size = .(,,,)
viewport.BackgroundTransparency =
viewport.Parent = frame
camera = .()
viewport.CurrentCamera = camera
camera.Parent = viewport
()
character = player.Character player.CharacterAdded:()
character.Archivable =
clone = character:()
_,v (clone:())
v:() v:()
v:()
clone.Parent = viewport
clone:(.(,,))
clone
model = ()
camOffset = .(,,)
camRotation = .(,)
modelRotationY =
dragging =
rotatingModel =
locked =
tapCount =
lastTap =
viewport.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
now = ()
now - lastTap <
tapCount +=
tapCount =
lastTap = now
tapCount >=
locked = locked
tapCount =
locked
UserInputService:(.KeyCode.LeftShift)
rotatingModel =
dragging =
)
viewport.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
dragging =
rotatingModel =
)
UserInputService.InputChanged:((input)
locked
input.UserInputType == .UserInputType.MouseMovement
input.UserInputType == .UserInputType.Touch
dragging
camRotation += .(-input.Delta.X * , -input.Delta.Y * )
rotatingModel
modelRotationY -= input.Delta.X *
)
RunService.RenderStepped:(()
model model.PrimaryPart
model:(
.(,,) *
.(, .(modelRotationY), )
)
torso = model:() model:()
torso
focus = torso.Position + .(,,)
rotationCFrame =
.(.(camRotation.Y), .(camRotation.X), )
camPos = focus + rotationCFrame:(camOffset)
camera.CFrame = .(camPos, focus)
)
player.CharacterAdded:(()
model
model:()
model = ()
)======= Paperdoll ----------- This script uses ViewportFrame to render a 3D clone of the player inside the GUI. The character is cloned locally so it does not affect the original character in Workspace. A custom Camera object is used inside the Viewport to control viewing angle independently from the main game camera. UIScale is applied for automatic DPI adjustment across different screen resolutions. You can change preset position by editing the variable: local PRESET = 1 (change to 2 for other layout). Feature - Camera drag (up / down / left / right) - Rotate paperdoll - Tap 4 time for lock / unlock - Full body viewport render - R6 & R15 compatible - DPI auto scale - Preset 1 (bottom-left, half body outside screen) - Preset 2 (top-left, smaller full body)

Universal