Run it
Copy the script and paste it into your executor.
Players = :()
UserInputService = :()
RunService = :()
TweenService = :()
player = Players.LocalPlayer
playerGui = player:()
BUTTON_SIZE =
GAP =
NORMAL_COLOR = .(, , )
PRESSED_COLOR = .(, , )
LOCK_COLOR = .(, , )
RAINBOW_SPEED =
RAINBOW_SATURATION =
RAINBOW_VALUE =
muted =
locked =
pressed = {
W = ,
A = ,
S = ,
D =
}
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.IgnoreGuiInset =
gui.Parent = playerGui
controller = .()
controller.Name =
controller.Size = .(
BUTTON_SIZE * + GAP * ,
BUTTON_SIZE * + GAP
)
controller.Position = .(, , , -)
controller.BackgroundTransparency =
controller.Parent = gui
(name, text, position)
button = .()
button.Name = name
button.Size = .(BUTTON_SIZE, BUTTON_SIZE)
button.Position = position
button.BackgroundColor3 = NORMAL_COLOR
button.BackgroundTransparency =
button.Text = text
button.TextColor3 = .(,,)
button.TextScaled =
button.Font = .Font.GothamBold
button.AutoButtonColor =
button.Parent = controller
corner = .()
corner.CornerRadius = .(,)
corner.Parent = button
stroke = .()
stroke.Thickness =
stroke.Transparency =
stroke.Color = .(,,)
stroke.Parent = button
shadow = .()
shadow.Name =
shadow.Size = .(,,,)
shadow.Position = .(,)
shadow.BackgroundColor3 = .(,,)
shadow.BackgroundTransparency =
shadow.ZIndex = button.ZIndex -
shadow.Parent = button
shadowCorner = .()
shadowCorner.CornerRadius = .(,)
shadowCorner.Parent = shadow
button
W = (
,
,
.(BUTTON_SIZE + GAP,)
)
A = (
,
,
.(,BUTTON_SIZE + GAP)
)
S = (
,
,
.(BUTTON_SIZE + GAP,BUTTON_SIZE + GAP)
)
D = (
,
,
.((BUTTON_SIZE + GAP) * ,BUTTON_SIZE + GAP)
)
buttons = {
W = W,
A = A,
S = S,
D = D
}
lockButton = .()
lockButton.Name =
lockButton.Size = .(,)
lockButton.Position = .(
,,
,-
)
lockButton.BackgroundColor3 = LOCK_COLOR
lockButton.BackgroundTransparency =
lockButton.Text =
lockButton.TextScaled =
lockButton.Font = .Font.GothamBold
lockButton.TextColor3 = .(,,)
lockButton.AutoButtonColor =
lockButton.Parent = gui
lockCorner = .()
lockCorner.CornerRadius = .(,)
lockCorner.Parent = lockButton
lockStroke = .()
lockStroke.Thickness =
lockStroke.Color = .(,,)
lockStroke.Transparency =
lockStroke.Parent = lockButton
pressSound = .()
pressSound.Name =
pressSound.SoundId =
pressSound.Volume =
pressSound.Parent = gui
lockSound = .()
lockSound.Name =
lockSound.SoundId =
lockSound.Volume =
lockSound.Parent = gui
(sound)
muted
clone = sound:()
clone.Parent = gui
clone.Volume = sound.Volume
clone:()
.(,()
clone
clone:()
)
rainbowObjects = {
W,
A,
S,
D,
lockButton
}
.(()
hue =
gui.Parent
hue = (hue + RAINBOW_SPEED * ) %
rainbowColor = .(
hue,
RAINBOW_SATURATION,
RAINBOW_VALUE
)
_,object (rainbowObjects)
object object.Parent
object == lockButton
locked
object.BackgroundColor3 = rainbowColor
pressed[object.Name]
object.BackgroundColor3 = rainbowColor
.()
)
(button,state)
state
TweenService:(
button,
TweenInfo.(),
{
BackgroundColor3 = PRESSED_COLOR,
Size = .(
BUTTON_SIZE - ,
BUTTON_SIZE -
)
}
):()
TweenService:(
button,
TweenInfo.(),
{
Size = .(
BUTTON_SIZE,
BUTTON_SIZE
)
}
):()
activeTouches = {}
(direction,state)
pressed[direction] == state
pressed[direction] = state
button = buttons[direction]
button
(button,state)
state
(pressSound)
direction,button (buttons)
button.InputBegan:((input)
input.UserInputType == .UserInputType.Touch
input.UserInputType == .UserInputType.MouseButton1
activeTouches[input] = direction
(direction,)
)
button.InputEnded:((input)
activeTouches[input] == direction
activeTouches[input] =
(direction,)
)
()
character = player.Character
character
character:()
RunService.RenderStepped:(()
humanoid = ()
humanoid
camera = .CurrentCamera
camera
forward =
right =
pressed.W
forward +=
pressed.S
forward -=
pressed.D
right +=
pressed.A
right -=
direction = .(
right,
,
forward
)
direction.Magnitude >
direction = direction.Unit
cameraForward = .(
camera.CFrame.LookVector.X,
,
camera.CFrame.LookVector.Z
)
cameraRight = .(
camera.CFrame.RightVector.X,
,
camera.CFrame.RightVector.Z
)
cameraForward.Magnitude >
cameraForward = cameraForward.Unit
cameraRight.Magnitude >
cameraRight = cameraRight.Unit
finalDirection =
(cameraRight * direction.X) +
(cameraForward * direction.Z)
humanoid:(finalDirection,)
humanoid:(.zero,)
)
dragging =
dragStart
startPosition
(input)
delta = input.Position - dragStart
controller.Position = .(
startPosition.X.Scale,
startPosition.X.Offset + delta.X,
startPosition.Y.Scale,
startPosition.Y.Offset + delta.Y
)
controller.InputBegan:((input)
locked
input.UserInputType == .UserInputType.Touch
input.UserInputType == .UserInputType.MouseButton1
dragging =
dragStart = input.Position
startPosition = controller.Position
input.Changed:(()
input.UserInputState == .UserInputState.End
dragging =
)
)
UserInputService.InputChanged:((input)
dragging
input.UserInputType == .UserInputType.Touch
input.UserInputType == .UserInputType.MouseMovement
(input)
)
lockButton.Activated:(()
locked = locked
(lockSound)
locked
lockButton.Text =
lockButton.Text =
)
player.Chatted:((message)
message = .(message)
message = message:(,)
message ==
muted =
message ==
muted =
)
UserInputService.InputEnded:((input)
direction = activeTouches[input]
direction
activeTouches[input] =
(direction,)
)
player.CharacterAdded:(()
direction (pressed)
pressed[direction] =
buttons[direction]
buttons[direction].Size = .(
BUTTON_SIZE,
BUTTON_SIZE
)
)
Universal