Or for a smooth movement, you could use tweens.
local tweenService = game:GetService("TweenService")
local movingpart = script.Parent
local offset = Vector3.new(0, 5, 0)
local originalCFrame = movingpart.CFrame
while task.wait() do
local upTween = tweenService:Create(movingpart, TweenInfo.new(1.5, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut), {
CFrame = (originalCFrame + offset)
})
upTween:Play(); upTween.Completed:Wait()
upTween:Destroy()
local downTween = tweenService:Create(movingpart, TweenInfo.new(1.5, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut), {
CFrame = (originalCFrame)
})
downTween:Play(); downTween.Completed:Wait()
downTween:Destroy()
end