dpad movement mode
Key RequiredUniversal

dpad movement mode

Universal Scriptstyearstyear 755 views 593 executesUpdated Feb 20, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•129 lines (3144 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local GuiService = game:GetService("GuiService")
local StarterGui = game:GetService("StarterGui")

local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")

Player.CharacterAdded:Connect(function(char)
	Character = char
	Humanoid = char:WaitForChild("Humanoid")
end)

pcall(function()
	StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.TouchControls, false)
end)

if Player:WaitForChild("PlayerGui"):FindFirstChild("FatChicken") then
	Player.PlayerGui.FatChicken:Destroy()
end

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "FatChicken"
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.Parent = Player:WaitForChild("PlayerGui")

local Container = Instance.new("Frame")
Container.Size = UDim2.new(0,400,0,400)
Container.BackgroundTransparency = 1
Container.Parent = ScreenGui

local function updatePosition()
	if GuiService:IsTenFootInterface() then
		Container.Position = UDim2.new(0.04,0,0.35,0)
	else
		Container.Position = UDim2.new(0.02,0,0.38,0)
	end
end

updatePosition()
workspace.CurrentCamera:GetPropertyChangedSignal("ViewportSize"):Connect(updatePosition)

local ARROW_NORMAL = "rbxassetid://16810132542"
local ARROW_PRESSED = "rbxassetid://16810118497"

local function createButton(name, rotation, pos)
	local btn = Instance.new("ImageButton")
	btn.Name = name
	btn.Size = UDim2.new(0,160,0,160)
	btn.Position = pos
	btn.BackgroundTransparency = 1
	btn.AutoButtonColor = false
	btn.Parent = Container

	local arrow = Instance.new("ImageLabel")
	arrow.Size = UDim2.new(0.8,0,0.8,0)
	arrow.Position = UDim2.new(0.1,0,0.1,0)
	arrow.BackgroundTransparency = 1
	arrow.Image = ARROW_NORMAL
	arrow.Rotation = rotation
	arrow.Parent = btn

	btn.MouseButton1Down:Connect(function()
		arrow.Image = ARROW_PRESSED
	end)

	btn.MouseButton1Up:Connect(function()
		arrow.Image = ARROW_NORMAL
	end)

	btn.MouseLeave:Connect(function()
		arrow.Image = ARROW_NORMAL
	end)

	return btn
end

local Forward = createButton("Forward", 0, UDim2.new(0.5,-80,0,0))
local Backward = createButton("Backward", 180, UDim2.new(0.5,-80,1,-160))
local Left = createButton("Left", -90, UDim2.new(0,0,0.5,-80))
local Right = createButton("Right", 90, UDim2.new(1,-160,0.5,-80))

local moveX, moveZ = 0,0

local function bind(btn, axis, value)
	btn.MouseButton1Down:Connect(function()
		if axis == "X" then
			moveX = value
		else
			moveZ = value
		end
	end)

	btn.MouseButton1Up:Connect(function()
		if axis == "X" then
			moveX = 0
		else
			moveZ = 0
		end
	end)

	btn.MouseLeave:Connect(function()
		if axis == "X" then
			moveX = 0
		else
			moveZ = 0
		end
	end)
end

bind(Forward,"Z",-1)
bind(Backward,"Z",1)
bind(Left,"X",-1)
bind(Right,"X",1)

RunService.RenderStepped:Connect(function()
	if not Humanoid or not Humanoid.Parent then return end
	
	local seat = Humanoid.SeatPart
	
	if seat and seat:IsA("VehicleSeat") then
		seat.Throttle = -moveZ
		seat.Steer = moveX
	else
		Humanoid:Move(Vector3.new(moveX,0,moveZ), true)
	end
end)

Features & Information

This changes your movement mode to d-pad Now it also works for vehicle seats
#Roblox#Exploit#CustomMovementMode#StyearX

Community Comments (4)

this is so *ing peak

ItzPnsdgItzPnsdgMar 16, 2026(edited)

this is kinda shi‌t ui is too big

Replying to @ItzPnsdg
styearstyearMar 16, 2026

@ItzPnsdg It doesn't have autoscale and it's open source you can modify it

UserduderUserduderSep 13, 2026

Better for people who had Multi-touch failure issues

More Scripts for Universal Scripts