MoveTo and lerp are 2 completely different things so ill try by best to explain them to you and why there is no such thing as one being better then the other
a humanoid is a complex object the MoveTo function tells the humanoid that you want it to move to a position and the humanoid will walk to that position taking into consideration collisions gravity walkspeed and more
the lerp function is used to interpolated between two values
here is what the lerp function does
local function Lerp(value1, value2, alpha)
return value1 + (value2 - value1) * alpha
end
print(Lerp(1, 2, 0.7)) -- 1.7
so what this is doing is moving one value towards another value by a percentage
so if we did Lerp(10, 20, 0.5)
that will return a value of 15 because 0.5 = 50% so we are interpolated the value 10 50% towards 20 and thats 15
Roblox provides Lerp functions for many data types CFrame, Vector3, Vector2 and Color3
so if we have two colors
local color1 = Color.fromRGB(255, 0, 0) -- red
local color2 = Color.fromRGB(0, 0, 255) -- blue
local color3 = color1:Lerp(color2, 0.5) -- move red 50% closer towards blue to make purple
so we can use lerp to move objects towards other object like this
local part = ...
local targetPart = ...
while true do
part.Position = part.Position:Lerp(targetPart.Position, 0.5) -- move part 50% closer to targetPart
task.wait() -- wait 1 frame
end
so at frame 1 lets say part is at a position of 0 and target part is at a position of 10
part will move 50% closer now part is at 5
one frame later part will move 50% closer again and that will be 7.5
then one frame later another 50% and now its at 8.75
then one frame later another 50% and now its at 9.375
so as you can see the part is moving towards the target part 50% every frame but is never able to reach the target because 50% is never 100%
so don’t use lerp just because someone said its better
so if your not going to take advantage of humanoids then you should not use them at all
take a look at this post of how to not use humanoids and have lots of characters