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
