Hello, I am just curious and I have experimented a bit, how can I check what direction you are currently moving your mouse in? In restaurant tycoon 2 there are some examples of this, like up and down, or side to side, how can I check? I have tried for hours and I can’t figure it out.
If you want to tell which direction your mouse is moving into relative to your local player’s body you need to translate the world position of your mouse.Hit.Position to object space of your character’s humanoidroot part
How can I do that? I’m not the best at scripting.
local players = game:GetService("Players")
local player = players.LocalPlayer
local mouse = player:GetMouse()
local lastMouseX, lastMouseY = mouse.X, mouse.Y
mouse.Move:Connect(function()
if math.abs(mouse.X - lastMouseX) > math.abs(mouse.Y - lastMouseY) then
if mouse.X - lastMouseX > 0 then
print("Mouse is moving right!")
else
print("Mouse is moving left!")
end
else
if mouse.Y - lastMouseY > 0 then
print("Mouse is moving down!")
else
print("Mouse is moving up!")
end
end
lastMouseX, lastMouseY = mouse.X, mouse.Y
end)
I believe this is what you’re looking for, assuming you’re referring to the mouse cursor’s screen position (2D).
Wow thanks man! But what is uh math.abs?
math.abs()
is a math library function which returns the absolute value of a calculation. In other words it’ll always return a positive number value, even if its argument is a negative number value.
print(math.abs(-100)) --100
Thanks man, helpful stuff, you really are a Forummer.
This doesn’t work in first person, or when hold right click to move the camera. Any fixes to that?
In those cases you’ll need to check the camera’s rotation (as the cursor is static).
local Game = game --Local environment integration.
local Workspace = workspace
local RunService = Game:GetService("RunService")
local Camera = Workspace.CurrentCamera
local Abs = math.abs
local Deg = math.deg
local Round = math.round
local X, Y, Z = Camera.CFrame:ToOrientation()
local function OnRenderStep()
local _X, _Y, _Z = Camera.CFrame:ToOrientation()
_X, _Y, _Z = Round(Deg(_X)), Round(Deg(_Y)), Round(Deg(_Z))
if Abs(_X - X) > Abs(_Y - Y) then
if _X > X then
print("Camera is rotating up.")
elseif _X < X then
print("Camera is rotating down.")
end
else
if _Y > Y then
print("Camera is rotating left.")
elseif _Y < Y then
print("Camera is rotating right.")
end
end
X, Y, Z = _X, _Y, _Z
end
RunService.RenderStepped:Connect(OnRenderStep)