I’m confused. Is this done on the client or server?
Both for replicating others
Client for preserving velocity to stay on the train
So your client is setting your character as fast as possible.
How about other client’s characters? How are they setted?
See what I don’t get, I can’t use CFrame on local scripts.
2 Months later and we still don’t have the answer…
Yep, i have no idea on what to do differently.
This is what I do and my version works pretty well.
local Players = game:GetService("Players")
local player = game.Players.LocalPlayer
local RunService = game:GetService('RunService')
local LastTrainCFrame
local Function
local Function2
Function = RunService.Heartbeat:Connect(function()
--------------------------------------------------------------- CHECK PLATFORM BELOW
local RootPart = player.Character.LowerTorso
local Ignore = player.Character
local ray = Ray.new(RootPart.CFrame.p,Vector3.new(0,-50,0))
local Hit, Position, Normal, Material = workspace:FindPartOnRay(ray,Ignore)
if Hit and Hit.Name == "RaftTop" then -- Change "RaftTop" to whatever the moving part's name is
--------------------------------------------------------------- MOVE PLAYER TO NEW POSITON FROM OLD POSITION
local Train = Hit
if LastTrainCFrame == nil then -- If no LastTrainCFrame exists, make one!
LastTrainCFrame = Train.CFrame -- This is updated later.
end
local TrainCF = Train.CFrame
local Rel = TrainCF * LastTrainCFrame:inverse()
LastTrainCFrame = Train.CFrame -- Updated here.
RootPart.CFrame = Rel * RootPart.CFrame -- Set the player's CFrame
--print("set")
else
LastTrainCFrame = nil -- Clear the value when the player gets off.
end
Function2 = player.Character.Humanoid.Died:Connect(function()
Function:Disconnect() -- Stop memory leaks
Function2:Disconnect() -- Stop memory leaks
end)
end)
In my case, ‘RaftTop’ is the bright, large plank of wood on top of the raft. Slightly hard to see in the video but the player does turn with the platform. The player can jump on while it’s moving and move with it, it works just as the Jailbreak trains do. Also yes, I was testing a raft with no water. I know it looks ugly.
Hope I could help! Feel free to ask any other questions if you need extra help or if something doesn’t work.
Wow. Thank you so much, this thread has gone unnoticed for such a long time and i lost all hopes. Ill be sure to give you credit whenever i use this.
No problem! I’m glad I could help!
Whats funny is that I was literally just looking for this and you posted a solution 40 mins ago lmao
Thanks my dude https://gyazo.com/a7ce4055d9cc3305451c77a15651b76d
Do you have any idea why it doesn’t work for body movers? I seem to get pulled around a lot for some reason and then I get flung off when the plane moves fast https://gyazo.com/3590beb2155a8d7271a4ad77d2ab4e52
I’ve never tried it with body movers so I’m not sure. My only idea is that something could be conflicting with it, because as long as the part is not anchored or welded to another anchored part Roblox tries to keep the player on it themselves.
Yeah I realised that. My current plan is to make a “fake” part that gets put to the position of the floor every second, and then Ill use that for the platform.
Thanks so much. Really helped me out. I noticed that if there is something blocking the ray from hitting the “RaftTop” it won’t move you.
Here is what I did to stop that.
--Replace Ignore with this.
local Whitelist = {} -- Table of Every "RaftTop" (You could just make a model or folder for it.)
local ray = Ray.new(RootPart.CFrame.p,Vector3.new(0,-50,0))
local Hit, Position, Normal, Material = workspace:FindPartOnRayWithWhitelist(ray,Whitelist)
Hello there! I have been struggling to get this script working properly. I have been testing this out on a boat witch contains of some models not a part. I have not figured out how to get it working and I had been glad to get some help with my problem, since i am not a professional scripter. Every little help works!
It only works if the model is being Cframed.
When I did the improvement. was the game sending many error messages and didn’t stop. The “player” error was a nil value, and when I replaced the variable with “player” it didn’t work.
Like below, you have to specify what the player is.
local Players = game:GetService(“Players”)
local player = game.Players.LocalPlayer
How do I specify what the player is so everyone who touches it gets Cframed with it? keep in mind that I am not a professional scripter.
Try on touched, otherwise i recommend making it a local script inside of the players starter player scripts.