Help with moving a part to another part while making it also look at the target part

Currently working on a payload system for my game, though I’m running into a problem where I can’t seem to get the payload part to look at and move to the next part. This is the script that handles the moving: (Keep in mind it worked fine until I tried to add the lookAt)

local targetCFrame = CFrame.new(payload.Main.Position,self.nextPoint.Obj.Position) * self.nextPoint.Obj.CFrame

local tween = TweenService:Create(payload.Main,TweenInfo.new(tweenTime,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{CFrame = targetCFrame})
tween:Play()

The payload should move to the next point while also looking at the next part. (The part is facing towards the next part at the start) Though this script is making the part move in a strange not-intended way, seen below:
https://streamable.com/ftq6y8

I’m not very good with CFrames/this math stuff so any help would be much appreciated.

try out:

local targetCFrame = CFrame.new(payload.Main.Position,self.nextPoint.Obj.Position)
targetCFrame.Position = self.nextPoint.Obj.Position

local tween = TweenService:Create(payload.Main,TweenInfo.new(tweenTime,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{CFrame = targetCFrame})
tween:Play()

unless you want it to “snap point” at every check mark:

local targetCFrame = CFrame.new(payload.Main.Position,self.nextPoint.Obj.Position)
payload.Main.CFrame =  targetCFrame
targetCFrame.Position = self.nextPoint.Obj.Position

local tween = TweenService:Create(payload.Main,TweenInfo.new(tweenTime,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{CFrame = targetCFrame})
tween:Play()