UserInputService

EntradaDetalhes
KeyboardLida com entradas de teclado.
MouseLida com movimento do mouse, cliques de botão e roda de rolagem.
TouchLida com entradas de toque em dispositivos móveis.
GamepadLida com botões do gamepad e sticks analógicos.
GyroLida com entradas de giroscópio em dispositivos móveis.
AccelerometerLida com entradas de acelerômetro em dispositivos móveis.

Teclado

local UserInputService = game:GetService("UserInputService")

UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if gameProcessed then return end
	if input.UserInputType == Enum.UserInputType.Keyboard then
		print("Key pressed: " .. input.KeyCode.Name)  -- Example: "Key pressed: W"
	end
end)
“gameProcessed” é um booleano que indica se a entrada foi tratada pelo jogo. Por exemplo, é verdadeiro ao digitar no chat, para que scripts personalizados possam ignorar as teclas relacionadas ao chat.

Mouse

local UserInputService = game:GetService("UserInputService")

UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if gameProcessed then return end
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		print("Mouse left button clicked")  -- Example: "Mouse left button clicked"
	elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
		print("Mouse right button clicked")  -- Example: "Mouse right button clicked"
	end
end)

Toque

local UserInputService = game:GetService("UserInputService")
local longTouchDuration = 1.0  -- Duration in seconds for a long touch
local touchStartTimes = {}

UserInputService.TouchStarted:Connect(function(touch, gameProcessed)
	if gameProcessed then return end
	touchStartTimes[touch] = tick()
end)

UserInputService.TouchEnded:Connect(function(touch, gameProcessed)
	if gameProcessed then return end
	local touchDuration = tick() - touchStartTimes[touch]
	if touchDuration >= longTouchDuration then
		print("Long touch detected at position: " .. tostring(touch.Position))  
		-- Example: "Long touch detected at position: Vector3.new(100, 200, 0)"
	end
	touchStartTimes[touch] = nil
end)

Gamepad

local UserInputService = game:GetService("UserInputService")

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    if input.UserInputType == Enum.UserInputType.Gamepad1 then
        print("Gamepad button pressed: " .. input.KeyCode.Name)  
        -- Example: "Gamepad button pressed: ButtonA"
    elseif input.UserInputType == Enum.UserInputType.Gamepad2 then
        print("Gamepad button pressed: " .. input.KeyCode.Name)  
        -- Example: "Gamepad button pressed: ButtonB"
    end
end)

Giroscópio

Image 1
Roblox Studio
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")

local player = Players.LocalPlayer

-- Wait for the PlayerGui and ScreenGui to be ready
local playerGui = player:WaitForChild("PlayerGui")
local screenGui = playerGui:WaitForChild("ScreenGui")

-- Create a TextLabel to display gyroscope data
local gyroLabel = Instance.new("TextLabel")
gyroLabel.Size = UDim2.new(0, 300, 0, 100)
gyroLabel.Position = UDim2.new(0.5, -150, 0.5, -50)  -- Centered on the screen
gyroLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
gyroLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
gyroLabel.TextScaled = true
gyroLabel.Text = "Gyroscope Data: N/A"
gyroLabel.Parent = screenGui

-- Function to handle rotation changes
local function RotationChanged(_rotation, rotCFrame)
	local x, y, z = rotCFrame:ToEulerAnglesXYZ()

	-- Update the label with the rotation data
	gyroLabel.Text = string.format("Rotation X: %.5f, Rotation Y: %.5f, Rotation Z: %.5f", math.deg(x), math.deg(y), math.deg(z))
end

if UserInputService.GyroscopeEnabled then
	UserInputService.DeviceRotationChanged:Connect(RotationChanged)
end

Acelerômetro

Image 1
Roblox Studio
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")

local player = Players.LocalPlayer

-- Wait for the PlayerGui and ScreenGui to be ready
local playerGui = player:WaitForChild("PlayerGui")
local screenGui = playerGui:WaitForChild("ScreenGui")

-- Create a TextLabel to display accelerometer data
local accelLabel = Instance.new("TextLabel")
accelLabel.Size = UDim2.new(0, 300, 0, 100)
accelLabel.Position = UDim2.new(0.5, -150, 0.5, -50)  -- Centered on the screen
accelLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
accelLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
accelLabel.TextScaled = true
accelLabel.Text = "Gravity Data: N/A"
accelLabel.Parent = screenGui

-- Function to handle gravity changes and update the label
local function updateGravityLabel(gravity)
	accelLabel.Text = string.format("Gravity X: %.5f, Gravity Y: %.5f, Gravity Z: %.5f", gravity.Position.X, gravity.Position.Y, gravity.Position.Z)
end

if UserInputService.AccelerometerEnabled then
	UserInputService.DeviceGravityChanged:Connect(updateGravityLabel)
end