I have a part that is anchored and CanCollide true. This is a server script inside of it. It should make the part move forward, but it gradually moves diagonally.
local part = script.Parent while true do wait(0.01) part.CFrame = part.CFrame - Vector3.new(0,0,6) end
If the part is rotated, it'll make it go diagonally as adding a Vector3 moves it using the global axes. To move it on the local axises, use cf * cf:
part.CFrame = part.CFrame * CFrame.new(-Vector3.new(0,0,6)) -- or part.CFrame = part.CFrame * CFrame.new(0,0,-6)