We use cookies on this site to enhance your user experience

Normalized Mouse Position

Normalized Mouse Position

This code sample shows how you can create a DataType/Vector2 representing the Mouse object’s position on screen (Mouse/X|X and Mouse/Y|Y) and the size of the screen itself (Mouse/ViewSizeX|ViewSizeX and Mouse/ViewSizeY|ViewSizeY). Using these, you can normalize the position of the mouse on-screen such that the top-left just under the topbar maps to (0, 0) and the bottom-right maps to (1, 1). This normalized position is calculated and printed as the mouse moves using the Mouse/Move|Move event.

-- Note: You should use ContextActionService or UserInputService instead of 
-- the Mouse object for accomplishing this task.
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

local function onMouseMove()
	-- Construct Vector2 objects for the mouse's position and screen size
	local position = Vector2.new(mouse.X, mouse.Y)
	local size = Vector2.new(mouse.ViewSizeX, mouse.ViewSizeY)
	-- A normalized position will map the top left (just under the topbar)
	-- to (0, 0) the bottom right to (1, 1), and the center to (0.5, 0.5).
	-- This is calculated by dividing the position by the total size.
	local normalizedPosition = position / size
	print(normalizedPosition)
end
mouse.Move:connect(onMouseMove)