Missiles won't quite look towards a target point while tweening with CFrame

this is a continuation of a previous thread:

Since that previous post I have been able to make the Homing missiles correctly rotate towards a moving target by just having their model’s MovementPoint be rotated.

The problem isn’t quite over yet however since the Non-Homing missiles still aren’t fixed and I’ve hit more dead-ends trying to find a way to fix them.

As it stands right now, they will no longer be fired at an angle and move completely vertical, instead they will stay horizontal but at a flat angle with no changes made to it.

The current code for them is very similar to this, with a slight bit cut out for simplicity’s sake

local TweenS = game:GetService("TweenService")
local NotEnded = true

script.Parent.Event.Event:Connect(function(Target)
	local Thing1 = (script.Parent.MovementPoint.Position - Target).Magnitude
	local Thing2 = (Thing1 / 0.5) / 100
	local TweenInf = TweenInfo.new(Thing2, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, false, 0)
	
	local Finish = {CFrame = CFrame.new(Target)}

	local Tween = TweenS:Create(script.Parent.MovementPoint, TweenInf, Finish)
	Tween:Play()
	wait(Thing2)
	NotEnded = false
end)

script.Parent.Event.Event:Connect(function(Target)
	print("test thing")
	while NotEnded == true do wait()
		script.Parent.MovementPoint.CFrame = CFrame.new(script.Parent.MovementPoint.Position, Vector3.new(Target.X, Target.Y, Target.Z))
	end
end)

variables are almost identical to last time, you can check the previous post for context.

A few things to note from the previous post, the missiles are moved using a part called the MovementPoint since they are built in a way of which that Position changes won’t cut it, thus CFrame is needed instead which can cause problems with getting CFrame.lookAt() or equivalents to work properly.

If I can get the missiles to not only rotate towards the target but stay rotated towards the target then that would solve my issue, help here would be greatly appreciated.

Dont use tweens, similar to the advice from the previous thread

Tweens are usually only good from getting point A to B, if point B changes then the previous tween will need to be cancelled in order to avoid conflicts.

I recommend using PID instead and a run service frame by frame loop. This can achieve a physics like feel even when you are using CFrames.

the thing is though Point B doesn’t change with the Non-Homing missiles, the Homing ones were changing the Point B but it managed to still work fine.

upon looking at it closer I do see what you mean though and I’ll try it and see if it works

alright two seconds into reading that post and I have to say what the frick did I just read I need this to be dumbed down just a little, mostly just to understand what I need to be doing with forces and how to make a Heartbeat / Runservice function using it

Edit:
currently I have code that looks a bit like this:
( built off of code from the previous post )

RunService.Stepped:Connect(function()
    local Thing1 = (script.Parent.MovementPoint.Position - TargetThingy).Magnitude
    local Thing2 = (Thing1 / 0.5) / 25
    local Velocity = direction * length
    NewPosition = LastPosition + Velocity -- * (deltaTime)
    script.Parent.MovementPoint.CFrame = CFrame.new(LastPosition, NewPosition)
    LastPosition = NewPosition
    wait(Thing2)
end)

the main part that confuses me is how I’m supposed to obtain details on Direction and Length???

alright a ( hopefully ) simple question since I think I’ve nearly gotten this to work how I want:

I need to add a value onto a LookVector in order to get the missile to move at the same speed when fired.

the current code is the following:

while true do wait()
	if Thing == true then
		local Thing1 = (script.Parent.MovementPoint.Position - AnotherThing).Magnitude
		local Thing2 = (Thing1 / 0.5) / 100
		script.Parent.MovementPoint.CFrame = CFrame.new(script.Parent.MovementPoint.Position + (script.Parent.MovementPoint.CFrame.LookVector), Vector3.new(AnotherThing.X, AnotherThing.Y, AnotherThing.Z))
		print(script.Parent.MovementPoint.CFrame.LookVector)
		print(Thing2)
	end
end

Thing is a variable that just starts the while loop when a value is finished being set above the code shown.
Thing1 and Thing2 are shown to be declared.
AnotherThing is a carryover of the Target Vector3 value from before.
the rest is relatively self-explanatory.

I need Thing2 to be somehow set to the LookVector in a way that makes it judge how fast the missiles need to move in the direction of the LookVector.

still quite stuck here, apologies for boosting this to the top of the scripting support category but I am genuinely stumped on this.