InputChanged
The InputChanged event fires when a user changes how they’re interacting via a Human-Computer Interface device (Mouse button down, touch begin, keyboard button down, etc).
To ignore events that are automatically handled by Roblox, like scrolling in a ScrollingFrame
, check the gameProcessedEvent argument is false.
This event can be used along with UserInputService/InputBegan
and UserInputService/InputEnded
to track when user input begins, changes, and ends.
This event only fires when the Roblox client window is in focus. For example, inputs will not be captured when the window is minimized.
As this event only fires locally, it can only be used in a LocalScript
.
Parameters
Name | Type | Default | Description |
---|---|---|---|
|
An |
||
|
Indicates whether the game engine internally observed this input and acted on it. Generally this refers to UI processing, so if a button was touched or clicked from this input, |
Code Samples
Handling InputChanged
The following example demonstrates one of many usage examples of handling user input from InputChanged depending on its type.
-- In order to use the InputChanged event, the UserInputService service must be used
local userInputService = game:GetService("UserInputService")
-- Prints the current input position and the change (delta) in position
local function printMovement(input)
print("\tPosition:",input.Position)
print("\tMovement Delta:",input.Delta)
end
-- A sample function providing multiple usage cases for various types of user input
local function InputChanged(input, gameProcessed)
if input.UserInputType == Enum.UserInputType.MouseMovement then
print("The mouse has been moved!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.MouseWheel then
print("The mouse wheel has been scrolled!")
print("\tWheel Movement:",input.Position.Z)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
if input.KeyCode == Enum.KeyCode.Thumbstick1 then
print("The left thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.Thumbstick2 then
print("The right thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.ButtonL2 then
print("The pressure being applied to the left trigger has changed!")
print("\tPressure:",input.Position.Z)
elseif input.KeyCode == Enum.KeyCode.ButtonR2 then
print("The pressure being applied to the right trigger has changed!")
print("\tPressure:",input.Position.Z)
end
elseif input.UserInputType == Enum.UserInputType.Touch then
print("The user's finger is moving on the screen!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.Gyro then
local rotInput,rotCFrame = UserInputService:GetDeviceRotation()
local rotX,rotY,rotZ = rotCFrame:toEulerAnglesXYZ()
local rot = Vector3.new(math.deg(rotX),math.deg(rotY),math.deg(rotZ))
print("The rotation of the user's mobile device has been changed!")
print("\tPosition",rotCFrame.p)
print("\tRotation:",rot)
elseif input.UserInputType == Enum.UserInputType.Accelerometer then
print("The acceleration of the user's mobile device has been changed!")
printMovement(input)
end
end
userInputService.InputChanged:Connect(InputChanged)