-- Server Script
local RunService = game:GetService('RunService')
local Part = workspace.Part
local lastPosition = Part.Position
RunService.Stepped:Connect(function()
local Delta = Part.Position - lastPosition
for _, Plr in game.Players:GetPlayers() do
if Plr.Character == nil then return end
local rootPart:BasePart = Plr.Character:FindFirstChild('HumanoidRootPart')
if rootPart then
rootPart.CFrame += Delta
end
end
lastPosition = Part.Position
end)
while task.wait() do
Part.Position += Vector3.new(.1,0,0)
end
The issue is that the player’s position keeps being reset and the next position to be teleported to is being calculated before the player’s movement is put into account.
Seems like the teleporting is done on a server script perhaps this is the reason why.
I believe it should be done in a local script to avoid network replication lag and also to make it similar to the popular jailbreak train platform system solution which should seem to work.
You might need to do more work if you want to do something like jumping between platforms.