PcoWSkbVqDnWTu_dm2ix
We use cookies on this site to enhance your user experience
Collapse Sidebar

Position

InputObject

Vector3

This property describes a DataType/Vector2|Vector2 positional value of this input.

For mouse and touch input, this is the screen position of the mouse/touch, described in the x and y components.

For the mouse wheel input, the z component describes whether the wheel was moved forward (1), backwards (-1), or not at all (0).

For Enum/KeyCode|KeyCode input, this indicate’s the position of the player’s Mouse.

#See also

  • InputObject/Delta
  • InputObject/KeyCode
  • InputObject/UserInputState
  • InputObject/UserInputType


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)

Handling InputBegan

The following example demonstrates one of many usage examples of handling user input from InputBegan depending on its type.

-- In order to use the InputBegan event, the UserInputService service must be used
local UserInputService = game:GetService("UserInputService")

-- A sample function providing multiple usage cases for various types of user input
UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if input.UserInputType == Enum.UserInputType.Keyboard then
		local keyPressed = input.KeyCode
		print("A key is being pushed down! Key:",input.KeyCode)
	elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
		print("The left mouse button has been pressed down at",input.Position)
	elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
		print("The right mouse button has been pressed down at",input.Position)
	elseif input.UserInputType == Enum.UserInputType.Touch then
		print("A touchscreen input has started at",input.Position)
	elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
		print("A button is being pressed on a gamepad! Button:",input.KeyCode)
	end

	if gameProcessed then
		print("\tThe game engine internally observed this input!")
	else
		print("\tThe game engine did not internally observe this input!")
	end
end)

Handling InputEnded

The following example demonstrates one of many usage examples of handling user input from InputEnded depending on its type.

-- In order to use the InputChanged event, the UserInputService service must be used
local UserInputService = game:GetService("UserInputService")
 
-- A sample function providing multiple usage cases for various types of user input
UserInputService.InputEnded:Connect(function(input, gameProcessed)
	if input.UserInputType == Enum.UserInputType.Keyboard then
		local keyPressed = input.KeyCode
		print("A key has been released! Key:",input.KeyCode)
	elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
		print("The left mouse button has been released at",input.Position)
	elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
		print("The right mouse button has been released at",input.Position)
	elseif input.UserInputType == Enum.UserInputType.Touch then
		print("A touchscreen input has been released at",input.Position)
	elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
		print("A button has been released on a gamepad! Button:",input.KeyCode)
	end
	
	if gameProcessed then
		print("\tThe game engine internally observed this input!")
	else
		print("\tThe game engine did not internally observe this input!")
	end
end)