I’m trying to make a system where the character moves to wherever. For customization purposes, I am not using the starter player ClickToMove functionality. Here’s my code
local humanoid = character:WaitForChild("Humanoid")
local root = character:WaitForChild("HumanoidRootPart")
local roundedValues = {targetPosition.X, targetPosition.Z}
for i, v in pairs(roundedValues) do
roundedValues[i] = math.round(v / 5) * 5
end
targetPosition = Vector3.new(roundedValues[1], 0, roundedValues[2])
humanoid:MoveTo(targetPosition)
But as you can see, that is not at all where my root part ends up!

It’s practically half a stud off! This causes an extremely annoying uncenterd character.

Does anyone know why :MoveTo() is acting so imprecise? Are there any alternative ways to accomplish this without using the ROBLOX ClickToMove system?
As always, all replies are appreciated!