Im trying to have my character stay on a moving platform, but each time i come close to a wall i bounce off,
what im doing is getting the CFrame of the platform, And each time it changes, change the CFrame of the character accordingly.
It works fine for platform's that are anchored and then the cframe is set, but not for parts with velocity,
Here's the code:
local function UpdateMovingBlock(NewCheck) debug.profilebegin("Moving block update") local NewPosition = NewCheck local StandingOnCFrame = StandingOn.CFrame if StandingOnLastCFrame ~= StandingOnCFrame then NewPosition = StandingOnCFrame:toWorldSpace(StandingOnLastCFrame:toObjectSpace(NewCheck)) end local StandingOnContinued = Workspace:FindPartOnRayWithIgnoreList(Ray.new(NewPosition.p,Down*10),Ignore) or Workspace.DefaultStandingOnPart if StandingOnContinued == StandingOn then NewCheck = NewPosition HumanoidRootPart.Velocity = StandingOnCFrame:vectorToWorldSpace(StandingOnLastCFrame:vectorToObjectSpace(HumanoidRootPart.Velocity)) else if UpdateMovingBlockEvent then UpdateMovingBlockEvent:disconnect() end StandingOn = StandingOnContinued StandingOnCFrame = StandingOn.CFrame UpdateMovingBlockEvent = StandingOn.Changed:connect(function(v) if v == "CFrame" then HumanoidRootPart.CFrame = UpdateMovingBlock(HumanoidRootPart.CFrame) end end) end StandingOnLastCFrame = StandingOnCFrame debug.profileend() return NewCheck end
Every frame this function gets called with the current CFrame, and returns a new CFrame
Anny idea's on how to make the non-Anchored parts behave the same as the anchored parts?