local tweenService = game:GetService("TweenService")
local motion = script.Parent
local tween = function(o, p, s, d, t)
return tweenService:Create(o, TweenInfo.new(Enum.EasingStyle[s], ENum.EasingDirection[d], t), p)
end
local tween_0 = tween(motion, {CFrame = CFrame.new()}, "Linear", "InOut", 5) --make sure to replace CFrame.new() with the cframe of your choice as well as style, direction and time
tween_0:Play()
When using tweens, you don’t move with the part thats being tweened. However, when using physics based movers, you can stand on and move with the part while its moving.
@KeysOfFate is correct in the sense that players do not move with the part that’s being tweened, but there is just a very simple fix.
You could use RunService to repeatedly run some come that raycasts down from the player y amount of studs, and check if that ray hits the moving part. Then you would take the CFrame of the part as soon as it hits and assign that value to a variable, you could then take the CFrame of the part once more and assign it to another variable (for arguments sake let’s call these variables pos1 and pos2 in sequential order). You could then multiply pos2 by an inversed pos1 and assign that to a new variable (let’s call this one pos3 of course). Now we can easily just assign pos1 the new CFrame value for the moving part. And lastly we can set the CFrame of the players HumanoidRootPart to pos3 multiplied by the CFrame of the HumanoidRootPart itself.
But for the sake of simplicity, yes just use BodyMovers as suggested by @KeysOfFate.