I'm working on a FPS engine/framework. At the moment I'm stuck on the camera tracking arms part. I've got the arms to follow where you look, up and down, though they don't do it perfectly. I need them to dynamically raise and lower position, according to the how high or low you're looking. I can't seem to find a proper equation to do this though. Can anyone help me?
function WeldArms(Weapon) if Weapon == nil then Weapon = "DebugGun" end game.Players.LocalPlayer.Character["Left Arm"]:Destroy() game.Players.LocalPlayer.Character["Right Arm"]:Destroy() local Arms = game.ReplicatedStorage.Arms:Clone() local LArm = Instance.new("Weld") local RArm = Instance.new("Weld") RArm.Name = "RArm" LArm.Name = "LArm" LArm.Part0 = game.Players.LocalPlayer.Character.Head LArm.Part1 = Arms["Left Arm"] RArm.Part0 = game.Players.LocalPlayer.Character.Head RArm.Part1 = Arms["Right Arm"] LArm.C0 = CFrame.new(-1,-0.5,1) RArm.C0 = CFrame.new(1,-0.5,0.2) Arms.Parent = game.Workspace.CurrentCamera LArm.Parent = Arms RArm.Parent = Arms --Welding Weapon-- local Wep = Guns[Weapon].Directory:Clone() local WepWeld = Instance.new("Weld") WepWeld.Name = "WeaponWeld" WepWeld.Part0 = Arms[Guns[Weapon].MainArm] WepWeld.Part1 = Wep[Guns[Weapon].MainPart] WepWeld.C0 = CFrame.new(-1,-0.5,0) WepWeld.Parent = Wep Wep.Parent = game.Workspace.CurrentCamera --Camera Follow-- local function updateGunPos() if Guns[Weapon].MainArm == "Left Arm" then LArm.C0 = CFrame.new(-1, -1+game.Workspace.CurrentCamera.CoordinateFrame.lookVector.Y,-2)*CFrame.Angles(game.Workspace.CurrentCamera.CoordinateFrame.lookVector.Y,math.rad(90),math.rad(180)) end end while wait(.05) do updateGunPos() end end