So, I’m trying to make a mouse controlled plane and I need to know how I get a control surface to look at the owner’s mouse.

This is what I can think of

local test = game.Workspace.test
local main = test.Main
local mainbg = main.BodyGyro
while true do
local mouse = game.Players.LocalPlayer:GetMouse()
mainbg.CFrame = CFrame.new(mainbg.Parent.Position, mouse.Hit.Position)
end

Working on a plane game right now, these should help you by multiplying the mouse hit with the bank value for rotation.

If you can move your camera anywhere, click this

local maxBank = 90
maxBank = (maxBank < -90 and -90 or maxBank > 90 and 90 or maxBank)
local bank = ((((mouse.ViewSizeX/2)-mouse.X)/(mouse.ViewSizeX/2))*maxBank)
bank = (bank < -maxBank and -maxBank or bank > maxBank and maxBank or bank)
--[[ i dont know why these lines above are complicated since this piece of code
was from a free model plane, also not bothered to simplify that
]]
mainbg.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
mainbg.CFrame = (mouse.Hit*CFrame.Angles(0,0,math.rad(bank)))

If the camera is locked, click this

local maxBank = 90
local bank = ((mouse.ViewSizeX/2)-mouse.X)/(mouse.ViewSizeX/2)*maxBank
mainbg.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
mainbg.CFrame = (mouse.Hit*CFrame.Angles(0,0,math.rad(bank)))

I’m on mobile rn, so I can’t simplify it directly, but I can help.

Either you can try removing this line and see if it does a difference.

maxBank = (maxBank < -90 and -90 or maxBank > 90 and 90 or maxBank)

If it changes the behavior, undo the changes. Otherwise you can either continue removing the bank or you can stop.

Or you can try removing this line and see it does a difference.

bank = (bank < -maxBank and -maxBank or bank > maxBank and maxBank or bank)

If it also changes the behavior, undo the changes.

Or you can remove all of those lines but if it does make a change just undo it. Otherwise if removing every line make a difference, just leave it there. I can’t simplify that code.