So, I have inserted a script into a part that I have called 'CamPart' in Workspace. I have set the local user's camera CFrame equal to this part. This is looped using RenderStepping so that the user's camera will be equal to 'CamPart's newest position as soon as possible. 'CamPart' follows an NPC known as 'farmer'.
The script inside 'CamPart' has the following code:
while wait() do
local tweenService = game:GetService("TweenService")
local farmer = workspace.LocalPlayerScenery.Farmer
local campart = script.Parent
local goal = {}
if farmer.Humanoid.WalkToPoint == workspace.MovementPart.Position then
campart.Position = farmer.HumanoidRootPart.Position + Vector3.new(6,2.7,0)
campart.Orientation = farmer.HumanoidRootPart.Orientation + Vector3.new(-10,0,0)
elseif farmer.Humanoid.WalkToPoint == workspace.MovementPart1.Position then
campart.Orientation = farmer.HumanoidRootPart.Orientation + Vector3.new(-10,0,0)
campart.Position = farmer.HumanoidRootPart.Position + Vector3.new(0,2.7,6)
elseif farmer.Humanoid.WalkToPoint == workspace.MovementPart1pt2.Position then
campart.Orientation = farmer.HumanoidRootPart.Orientation + Vector3.new(0,0,-10)
campart.Position = farmer.HumanoidRootPart.Position + Vector3.new(-6,2.7,0)
elseif farmer.Humanoid.WalkToPoint == workspace.MovementPart2.Position then
campart.Orientation = farmer.HumanoidRootPart.Orientation + Vector3.new(-10,0,0)
campart.Position = farmer.HumanoidRootPart.Position + Vector3.new(0,2.7,-6)
elseif farmer.Humanoid.WalkToPoint == workspace.MovementPart2pt2.Position then
campart.Orientation = farmer.HumanoidRootPart.Orientation + Vector3.new(0,30,10)
campart.Position = farmer.HumanoidRootPart.Position + Vector3.new(-6,2.7,0)
elseif farmer.Humanoid.WalkToPoint == workspace.MovementPart3.Position then
campart.Orientation = farmer.HumanoidRootPart.Orientation + Vector3.new(-10,0,0)
campart.Position = farmer.HumanoidRootPart.Position + Vector3.new(0,2.7,-6)
end
local tweenInfo = TweenInfo.new(1)
local tween = tweenService:Create(campart, tweenInfo, goal)
tween:Play()
end
This is inside a regular script. This part follows an NPC that walks around, and the NPC's legs and arms when moving appear to be slightly laggy/jittery when I test the game.
If anyone has any idea of how to remove/reduce the laggy/jittery movement of the NPC when both 'CamPart' and the camera are following it, please let me know. All help is greatly appreciated. Thank you! :)

3 comments
You shouldn't be using wait as a condition, but good answer anyways.
why not? its basically equivalent to saying while true do then adding a wait()
Thank you so much! Greatly appreciated. I'm going to read over this a few times :)